[SQL] WINDOW, LAG

Peter·2021년 7월 13일
0

SQL

목록 보기
18/19

WINDOW

  • 어떤 사용자 세션에서 시간순으로 봤을 때
    - 앞 세션의 채널이 무엇인지 알고 싶다면?
    - 혹은 다음 세션의 채널이 무엇인지 알고 싶다면?

LAG함수

%%sql

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;
  • LAG의 두번째 인자 숫자는 몇번째 전 데이터를 읽어 올까 하는 설정
  • previous channel에 유저아이디, 시간순으로 정렬된 channel의 정보를 한칸씩 밀어서 가져옴
%%sql

SELECT usc.*, st.ts, LAG(channel, 1) OVER (PARTITION BY userId ORDER BY ts DESC) 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;
  • 파티션 뒤에 디센트를 붙여주면 다음 넘어가는 도메인을 뽑을 수 있음
profile
컴퓨터가 좋아

0개의 댓글