2주차 세 번째 날. 오늘은 SQL 세션 마지막이었고, 데이터 리터러시 관련된 강의를 수강했다.
학습 내용
UNION
- 여러 개의 SELECT 문의 결과를 하나의 테이블로 연결하여 보고 싶을 때 사용.
- 아래로 가로 행을 추가하여 테이블끼리 수직 결합을 수행할 때 사용한다.
- 열의 갯수와 순서가 모든 쿼리에서 동일하고, 데이터 형식이 일치해야 한다.
DATEDIFF
SQL DATEDIFF(expr1, expr2) -- expr1, expr2 는 모두 날짜 데이터 형식이어야 하고, expr1 날짜에서 expr2를 뺀다.
- 전에 코테 풀면서 공부했던 함수였는데, 작동 범위를 거꾸로 기억하고 있었어서 쿼리문이 틀렸었다. 이 부분만 고치니까 해결됨.
고찰 & 기타
- 함수를 쓸 때는 꼭 범위를 확인하자...
- 어제 과제를 풀면서 내가 제출한 쿼리가 정말로 같은 값을 출력하는지(=동일한 기능을 하는지) 궁금해서 비교하는 쿼리를 어찌어찌 작성했다. 제대로 기능하는 것 같아 다행. 이 쿼리문 작성하면서 썼던 논리구조로 그동안 계속 막혔던 SQL 코테 한 문제 해결했다!
SQL -- 949 개의 date 결과가 존재한다! 전부 일치함! SELECT sum(a.compare) FROM ( SELECT q2.`date` ,q2.num_id AS '문제 2번 id 수' ,q3.num_id AS '문제 3번 id 수' , CASE WHEN q2.num_id = q3.num_id THEN '1' -- 동일한 행은 전부 1로 출력하므로, 전체 크기인 949와 비교하면 동일하지 않은 행의 수를 알 수 있다. ELSE 0 END AS compare FROM ( SELECT `date` ,count(distinct game_actor_id) AS num_id FROM users GROUP BY `date` HAVING count(distinct game_actor_id) > 10 ) AS q2 LEFT JOIN ( SELECT `date` ,num_id FROM (SELECT `date` ,count(DISTINCT game_actor_id) AS num_id FROM users GROUP BY `date`) AS u WHERE u.num_id > 10 ) AS q3 ON q2.`date` = q3.`date` ) AS a ; ```
'내일배움캠프_데이터분석_2기 > TIL' 카테고리의 다른 글
[TIL] camp_day10_240426 (0) | 2024.04.26 |
---|---|
[TIL] camp_day9_240425 (1) | 2024.04.25 |
[TIL] camp_day7_240423 (0) | 2024.04.23 |
[TIL] camp_day6_240422 (1) | 2024.04.22 |
[TIL] camp_day5_240418 (0) | 2024.04.19 |