<aside> ❓ TO_CHAR, DATE_TRUNC, SUBSTRING 중 날짜를 잘라 사용하기에 더 효율적인 함수는 뭐야?

</aside>

<aside> ❗ 이 세 가지 함수 중 DATE_TRUNC는 날짜를 잘라내는 데 가장 효율적입니다. TO_CHARSUBSTRING 함수보다 빠르고 간결합니다.

DATE_TRUNC 함수는 지정된 시간 단위로 날짜를 반환합니다. 예를 들어 DATE_TRUNC('day', now())는 오늘 날짜를 반환합니다. TO_CHAR 함수는 날짜를 지정된 형식으로 문자열로 반환합니다. 예를 들어 TO_CHAR(now(), 'YYYY-MM-DD')는 오늘 날짜를 "2023-03-08" 형식의 문자열로 반환합니다. SUBSTRING 함수는 문자열에서 지정된 부분을 반환합니다. 예를 들어 SUBSTRING('2023-03-08', 8, 2)은 "08" 문자열을 반환합니다.

DATE_TRUNC 함수는 TO_CHARSUBSTRING 함수보다 빠르기 때문에 날짜를 잘라내는 데 더 효율적입니다. DATE_TRUNC 함수는 날짜를 지정된 시간 단위로 반환하기만 하면 되기 때문에 더 간단합니다. TO_CHARSUBSTRING 함수는 문자열을 생성해야 하기 때문에 더 복잡합니다.

</aside>


SELECT 
	LEFT(ts, 7 ) AS mon,
	COUNT(1) AS session_count
FROM raw_data.session_timestamp
GROUP BY 1 
ORDER BY 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;

CTAS

DROP TABLE IF EXIST adhoc.keeyong_session_summary;
CREATE TABLE adhoc.keeyong_session_summary AS
SELECT B.*, A.ts FROM raw_data.session_timestamp A
JOIN raw_data.user_session_channel B ON A.sessionid = B.sessionid;