[TIL] day32

Hyebin·2022년 2월 23일
0

TIL

목록 보기
33/47

TIL

  • GROUP BY & AGGREGATE

GROUP BY
: 테이블의 레코드를 그룹핑하여 그룹별로 다양한 정보를 계산할때 사용

AGGREGATE
: 그룹핑 후 그룹별로 계산할 내용을 결정할때 사용됨

Q. 월별 세션수를 계산해보자

SELECT
	channel,
    COUNT(1) AS session_count,
    COUNT(DISTINCT useId) AS user_count
FROM raw_data.user_session_channel
GROUP BY 1
ORDER BY 2 DESC;

여기서의 GROUP BY 1GROUP BY channel이라해도 같은 의미

Q. 가장 많은 세션을 만들어낸 사용자 아이디는?

SELECT
	userId,
    COUNT(1) AS count
FROM raw_data_session_channel
GROUP BY 1
ORDER BY 2 DESC
LIMIT 1;

Q. 월별 유니크한 사용자 수?

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;

여기서의 조인은 inner join에 해당한다.
양쪽에 세션 아이디가 같은것만 두고 나머지는 버린다.

TO_CHAR: 문자열 타입이 아닌 인자를 필드로 받아서 문자열 타입으로 반환
DATE_TRUNC: 문자열이 아니라 timestamp 타입으로 반환
profile
공부중입니다 :D

0개의 댓글

관련 채용 정보