예제1 : 월별 세션수를 계산하는 SQL
SELECT
LEFT(created, 7) AS mon, -- created가 2022-09-12 형식이므로 LEFT하면 2022-09가 나옴
COUNT(1) AS session_count
FROM prod.session
GROUP BY 1 -- GROUP BY mon == GROUP BY LEFT(created, 7) -> 연도+월별로 묶임
ORDER BY 1;
추가적인 예제
한 사용자는 한번만 카운트되어야 함
5) 월별 채널별 유니크한 사용자 수
예제2 : 가장 많이 사용된 채널은 무엇인가?
SELECT
user_id,
COUNT(1) AS count
FROM prod.session
GROUP BY 1 -- GROUP BY user_id
ORDER BY 2 DESC -- ORDER BY count DESC
LIMIT 1;
예제3 : 가장 많은 세션을 만들어낸 사용자 ID는 무엇인가?
SELECT
user_id,
COUNT(1) AS count
FROM prod.session
GROUP BY 1 -- GROUP BY user_id
ORDER BY 2 DESC -- ORDER BY count DESC
LIMIT 1;
예제4 : 월별 유니크한 사용자 수
SELECT
LEFT(created, 7) AS mon,
COUNT(DISTINCT user_id) AS user_count
FROM prod.session
GROUP BY 1 -- GROUP BY mon, GROUP BY LEFT(created, 7)
ORDER BY 1;
예제5 : 월별 채널별 유니크한 사용자 수
SELECT [s.id](http://s.id/), s.user_id, s.created, s.channel_id, c.channel
FROM session s
JOIN channel c ON [c.id](http://c.id/) = s.channel_id;
SELECT
LEFT(s.created, 7) AS mon,
c.channel,
COUNT(DISTINCT user_id) AS mau
FROM session s
JOIN channel c ON c.id = s.channel_id
GROUP BY 1, 2
ORDER BY 1 DESC, 2;