SELECT
channel,
COUNT(1) AS session_count,
COUNT(DISTINCT userId) AS user_count,
FROM raw_data.user_session_count
GROUP BY 1
ORDER BY 2 DESC;
SELECT
userId,
COUNT(*) as count
FROM raw_data.user_session_count
GROUP BY userId
ORDER BY count DESC
LIMIT 1;
SELECT
TO_CHAR(t.ts, 'YYYY-MM') AS month,
COUNT(DISTINCT s.userId) AS mau
FROM raw_data.user_session_count s
JOIN raw_data.session_timestamp t
ON s.sessionId = t.sessionId
GROUP BY 1
ORDER BY 1 DESC;
SELECT
TO_CHAR(t.ts, 'YYYY-MM') AS month,
s.channel
COUNT(DISTINCT s.userId) AS mau
FROM raw_data.user_session_count s
JOIN raw_data.session_timestamp t
ON s.sessionId = t.sessionId
GROUP BY 1, 2
ORDER BY 1 DESC;
SELECT로 테이블 생성하는 방법
중복된 레코드 체크하기
SELECT COUNT(1)
FROM session_summary;
SELECT COUNT(1)
FROM (
SELECT DISTINCT userId, sessionId, ts, channel
FROM session_summary
);
With ds AS (
SELECT DISTINCT userId, sessionId, ts, channel
FROM session_summary
)
SELECT COUNT(1)
FROM ds;
최신 데이터의 존재 여부 체크하기
SELECT MIN(ts), MAX(ts)
FROM session_summary;
Primary Key Uniqueness가 지켜지는지 체크하기
SELECT sessionId, COUNT(1)
FROM session_summary
GROUP BY 1
ORDER BY 2 DESC
LIMIT 1;
값이 비어있는 칼럼들이 있는지 체크하기
SELECT
COUNT(CASE WHEN sessionId is NULL THEN 1 END) sessionid_null_count,
COUNT(CASE WHEN userId is NULL THEN 1 END) userid_null_count,
COUNT(CASE WHEN ts is NULL THEN 1 END) ts_null_count,
COUNT(CASE WHEN channel is NULL THEN 1 END) channel_null_count
FROM session_summary;