교육/프로그래머스 인공지능 데브코스
[11주차 - Day3] GROUP BY, AGGREGATE, CTAS
zzangyeah
2021. 8. 7. 20:40
728x90
3. GROUP BY와 CTAS
1.GROUP BY와 AGGREGATE 함수
테이블의 레코드를 그룹핑하여 그룹별로 다양한 정보를 계산
aggregate함수 : COUNT, SUM, AVG, MIN, MAX, LISTAGG, ...
예제 : 월별 세션 수를 계산하는 SQL
SELECT
LEFT(ts, 7) AS mon,
COUNT(1) AS session_count
FROM raw_data.session_timestamp
GROUP BY 1 -- GROUP BY mon, GROUP BY LEFT(ts, 7)
ORDER BY 1;
예제 : 가장 많이 사용된 채널은 무엇인가?
SELECT
channel,
COUNT(1) AS session_count,
COUNT(DISTINCT userId) AS user_count
FROM raw_data.user_session_channel
GROUP BY 1 -- GROUP BY channel
ORDER BY 2 DESC; --ORDER BY session_count DESC
예제 : 가장 많은 세션을 만들어낸 사용자 ID는 무엇인가?
SELECT
userId,
COUNT(1) AS count
FROM raw_data.user_session_channel
GROUP BY 1 --GROUP BY userId
ORDER BY 2 DESC --ORDER BY count DESC
LIMIT 1;
예제 : 월별 유니크한 사용자 수
=MAU(Monthly Active User)
시간 정보, 사용자 정보가 필요함
SELECT
TO_CHAR(A.ts, 'YYYY-MM') AS month,
COUNT(DISTINCT B.userId) AS mau
FROM raw_data.session_timestamp A
JOIN raw_data.user_session_channel B ON A.sessionId = B.sessionId
GROUP BY 1
ORDER BY 1 DESC;