Notice
Recent Posts
Recent Comments
Link
터칭 데이터
Redshift - 기타 고급 문법 소개와 실습 본문
알아두면 유용한 SQL 문법들
UNION, EXCEPT, INTERSECT
COALESCE, NULLIF
LISTAGG
LAG
WINDOW 함수
ROW_NUMBER OVER
SUM OVER
FIRST_VALUE, LAST_VALUE
JSON Parsing 함수
UNION, EXCEPT, INTERSECT
UNION (합집합)
여러개의 테이블들이나 SELECT 결과를 하나의 결과로 합쳐줌
UNION vs. UNION ALL
UNION은 중복을 제거
UNION
SELECT 'keeyong' as first_name, 'han' as last_name
UNION
SELECT 'elon', 'musk'
UNION
SELECT 'keeyong', 'han'
UNION ALL
SELECT 'keeyong' as first_name, 'han' as last_name
UNION ALL
SELECT 'elon', 'musk'
UNION ALL
SELECT 'keeyong', 'han'
EXCEPT (MINUS)
하나의 SELECT 결과에서 다른 SELECT 결과를 빼주는 것이 가능
INTERSECT (교집합)
여러 개의 SELECT문에서 같은 레코드들만 찾아줌
LISTAGG
GROUP BY에서 사용되는 Aggregate 함수 중의 하나
사용자 ID별로 채널을 순서대로 리스트:
SELECT userid, LISTAGG(channel, '->') WITHIN GROUP (ORDER BY ts) channels
FROM raw_data.user_session_channel usc
JOIN raw_data.session_timestamp st ON usc.sessionid = st.sessionid
GROUP BY 1
LIMIT 10;
LAG
WINDOW 함수 중 하나
어떤 사용자 세션에서 시간순으로 봤을 때
앞 세션의 채널이 무엇인지 알고 싶다면?
혹은 다음 세션의 채널이 무엇인지 알고 싶다면?
SELECT
usc.*,
st.ts,
LAG(channel, 1) OVER (PARTITION BY userId ORDER BY ts) prev_channel
FROM raw_data.user_session_channel usc
JOIN raw_data.session_timestamp st ON usc.sessionid = st.sessionid
ORDER BY usc.userid, st.ts
LIMIT 100;
맨 첫번째 채널은 이전 채널이 존재하지 않을테니 NULL(구글 코랩은 python이므로 None)이 나옵니다.
이전 채널이 아닌 이후 채널이 궁금하면 LAG OVER의 ORDER BY에 DESC를 추가하면 됩니다.
WINDOW
ROW_NUMBER OVER
FIRST_VALUE
LAST_VALUE
LAG
AVG, SUM, COUNT, MAX, MIN, MEDIAN, NTH_VALUE
JSON parsing 함수
JSON의 포맷을 이미 알고 있어야 사용할 수 있습니다.
JSON string을 입력 받아 특정 필드의 값에 접근할 수 있습니다.
{
"f2": {
"f3": "1"
},
"f4": {
"f5": "99",
"f6": "star"
}
}
SELECT JSON_EXTRACT_PATH_TEXT('{"f2":{"f3": "1"},"f4":{"f5":"99","f6":"star"}}','f4', 'f6');
SELECT JSON_EXTRACT_PATH_TEXT('{"f2":{"f3": "1"},"f4":{"f5":"99","f6":"star"}}','f4');
'SQL' 카테고리의 다른 글
Redshift - 트랜잭션(Transaction) (0) | 2023.11.16 |
---|---|
Redshift - 복습겸 숙제 (0) | 2023.11.16 |
Redshift - COALESCE, NULLIF, 특수한 필드명 사용방법 (0) | 2023.11.16 |
Redshift - 복습겸 숙제 (0) | 2023.11.16 |
Redshift - BOOLEAN과 NULL 팁 (0) | 2023.11.15 |