ํ ์ด๋ธ์ ๋ ์ฝ๋๋ฅผ ๊ทธ๋ฃนํํ์ฌ ๊ทธ๋ฃน๋ณ๋ก ๋ค์ํ ์ ๋ณด๋ฅผ ๊ณ์ฐํ๋ค.
์ด๋ ๋ ๋จ๊ณ๋ก ์ด๋ฃจ์ด์ ธ์๋ค.
์๋ณ ์ธ์ ์ -> ๋ง์ฝ ์ผ๋ณ์ ์ํ๋ค๋ฉด LEFT(ts, 10)์ผ๋ก ํ๋ฉด ๋๋ค.
SELECT
LEFT(ts, 7) AS mon,
COUNT(1) AS session_count
FROM raw_data.session_timestamp
GROUP BY 1
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
ORDER BY 2 DESC;
SELECT
userid,
COUNT(1) AS count
FROM raw_data.user_session_channel
GROUP BY 1
ORDER BY 2 DESC
LIMIT 1;
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;
SELECT
TO_CHAR(A.ts, 'YYYY-MM') AS month,
channel,
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, 2
ORDER BY 1 DESC, 2;
%%sql
CREATE TABLE adhoc.dongki_amount AS
SELECT
TO_CHAR(A.ts, 'YYYY-MM') AS month,
B.channel AS channel,
COUNT(DISTINCT B.userid) AS uniqueUsers,
COUNT(DISTINCT CASE WHEN C.refunded = 'false' THEN B.userid END) AS paidUsers,
CASE
WHEN COUNT(DISTINCT B.userid)=0 THEN 0
ELSE ROUND(paidUsers * 100 / uniqueUsers, 1)
END AS conversionRate,
SUM(C.amount) AS grossRevenue,
SUM(CASE WHEN C.refunded = 'true' THEN 0 ELSE C.amount END) AS netRevenue
FROM raw_data.session_timestamp A
JOIN raw_data.user_session_channel B ON A.sessionid = B.sessionid
JOIN raw_data.session_transaction C ON A.sessionid = C.sessionid
GROUP BY
TO_CHAR(A.ts, 'YYYY-MM'),
B.channel;
DROP TABLE IF EXISTS adhoc.kdk_session_summary;
CREATE TABLE adhoc.kdk_session_summary AS
SELECT B.*, A.ts FROM raw_data.session_timestamp A
JOIN raw_data.user_session_channel B ON A.session = B.sessionid;
SELECT COUNT(1)
FROM adhoc.kdk_session_summary;
SELECT COUNT(1)
FROM(
SELECT DISTINCT userid, sessionid, ts, channel
FROM adhoc.kdk_session_summary
);
With ds AS(
SELECT DISTINCT userid, sessionid, ts, channel
FROM adhoc.kdk_session_summary
)
SELECT COUNT(1)
FROM ds
SELECT MIN(ts), MAX(ts)
FROM adhoc.kdk_session_summary;
SELECT sessionid, COUNT(1)
FROM adhoc.kdk_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 adhoc.kdk_session_summary;