TIL(24.06.09.)

codataffee·2024년 6월 9일

TIL

목록 보기
62/135
post-thumbnail

#INTRO

요즘 눈이 너무 아파..

건강하게 오래 살기


#SQL 챌린지 세션 복습

오늘은 코드 풀기보다 지난 주 강의를 복습하는 시간을 보냈다.

  • SQL#CHALLENGE5
    (피벗(PIVOT) 테이블 만들기 + 퍼널 분석, 코호트 리텐션 분석 과제 리뷰)

💡 현업에서 WITH 문 을 이용해 단계별로 테이블을 만들어 전환율을 구하는지?

  • WITH 문을 사용하면 가독성, 재사용성, 성능 측면에서 서브쿼리를 많이 붙이는 것보다 좋다.


1번 쿼리에서 페이지 방문 로그를 가진 사용자의 아이디와 행동 시간만 조회하는 테이블 생성,
2번 쿼리에서 결제 로그를 가진 사용자의 아이디와 행동 시간만 조회하는 테이블 생성

3번 쿼리에서 해당 테이블들을 조인해주는데,
1번 행동에서 2번 행동으로 전환되는 전환율을 분석하고 싶은 것이니까
이벤트 발생 시간에 대한 조건을 지정해주는 것이 중요 !

t2.event_time > t1.event_time (결제가 페이지 방문 보다 나중에 일어났고,)
AND t2.event_time <= t1.event_time + interval '1' day (페이지 방문 후 1일 이내로 결제)

주의 1

  • 임시 테이블을 생성하고 조인을 사용하는 방법은
    이벤트 발생 시간에 대한 조건을 순차적으로 전환된 사용자만 계산하는 상황을 보장해주지만,
    유입 경로 기간이 길고 이벤트 수가 수십억 개에 달하는 상황이 된다면
    공간, 시간 복잡성을 초래하게 된다.

    +) 특히, 위 표와 같이 모든 이벤트를 모든 이벤트와 비교하는 과정에서 공간 복잡성을 유발한다.

주의 2

  • 조인을 할 경우 공간 복잡성을 유발하는 것을 해결하기 위해 윈도우 함수를 활용할 수 있다.


  • SQL#CHALLENGE6
    (Z 차트 만들기 + YOY 분석 + LEAD, LAG 함수, 순위 함수 복습)

Z차트 : 매출을 분석하기 위해 사용

  • 월별 매출 (파랑)
  • 매출 누적 합계 (주황)
    • 상대적으로 단기적 추이
  • 이동 합계 (회색)
    • 이동 합계 = 기준 월의 매출액 + 기준 월 전 11개월치 매출액 합계
      • 해당 월 기준으로 최근 1년치 누적 합계라고도 생각할 수 있다.
      • 이동 합계를 구하는 이유
        • 장기적 추이를 알 수 있고,
        • 계절성, 프로모션 등의 변동성을 완화해 추세를 볼 수 있다.

YOY

  • 전년 대비 (YEAR OVER YEAR)
    (올해 매출 - 지난해 매출) / 지난해 매출 X 100

LEAD
이후 N 행의 값을 가져오는 함수. 기본값은 1 (N번 리드하는 것)

  • 문법 :
LEAD(컬럼1) OVER (PARTITION BY 컬럼2 ORDER BY 컬럼3) 
OR
LEAD(컬럼1, 숫자) OVER (PARTITION BY 컬럼2 ORDER BY 컬럼3) 

LAG
이전 N 행의 값을 가져오는 함수. 기본값은 1 (N번 지연하는 것)

  • 문법 :
LAG(컬럼1) OVER (PARTITION BY 컬럼2 ORDER BY 컬럼3) 
OR
LAG(컬럼1, 숫자) OVER (PARTITION BY 컬럼2 ORDER BY 컬럼3) 

#OUTRO

오늘의 한 줄.

다시 집중해서 한 주 더 힘내기 !

profile
커피 좋아하는 데이터 꿈나무

0개의 댓글