교육/프로그래머스 인공지능 데브코스

[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;