휴가 중 문의를 받았다.
2022년 12월의 일별 누적거래액 차트를 만들고 싶어요.
아 물론 2021년 12월 1일부터 동기간 YoY를 비교하는 형태가 가능하면 좋을 것 같아요.
문과로 태어난 나의 정체성을 유지하고 싶었지만, 엔지니어의 기운이 스며든 것인지 기존에 시도하지 않았던 요청이 오면 게임하는 것만큼 흥미로운 것 같다. 요청 내용을 처리해보자.
일별 진척율을 왜 보고 있을까
우선 이런 것을 왜 구하는지 먼저 살펴보자. 비즈니스 분석팀은 매번 월말 기준 예측치를 산출한다.
이번달 예측치는 140점으로 예상 YoY는 40%가 나올 것 같아요.
이후 분석팀은 비즈니스 지표를 모니터링하게 된다. 물론 찐 엔지니어 성격의 데이터 분석팀은 이를 하지 않는 것 같다. 우리처럼 전략기획팀 한 스푼 묻은 데이터분석 조직이나, 혹은 사업부에서 주로 진행한다.
여튼 이렇게 모니터링을 하다보면, 전년도 이맘때와 비교할 때 예상보다 더 잘나오는 경우도 있고, 못나오는 경우도 있다. 예를 들어 [2021/12/01~2021/12/13]의 거래액과 [2022/12/01~2022/12/13]을 비교했을 때 YoY가 초기 예측한 40%에 근접하지 않고 초과하거나 미달하는 경우가 발생할 수 있다. 그런 경우, 어떤 것이 이슈인지 발견하기 위해서 이런 일별 진척율을 함께 확인하게 된다.
누적을 보고싶다면 SUM OVER
SQL을 공부하면서 계속 놀란다. 뭔가 사람이 이렇게 할 수 있는게 있지 않을까 생각하는 것들은 대부분 기능이 있다.
SQL에서는 SUM OVER라는 함수를 제공한다. RANK처럼 OVER을 제공하는 것인데, 원리는 간단하다.
- 무엇을 계속해서 더할거니
- 어떤 순서로 누적해서 더할거니
이 2개만 지정해주면 된다. 예를 들어서 살펴보겠다.
SELECT
regist_day, -- 거래발생일
total, -- (일단위)거래액
sum(total) OVER(ORDER BY regist_day ASC) --거래액 누적
FROM
gmv_data
우선 무엇을 계속 더할거니에 대해서 우리는 일별 거래액을 더할 것이기 때문에, sum 바로 뒤의 괄호 안에 total이라는 칼럼을 지정하게 된다. 그런 다음 각 행별로 기준에 따라 수치를 구할 때 사용하는 OVER를 사용한다. 이 뒤에는 우리가 일별 진척율에 따라 계산할 것이기 때문에 등록된 날짜로 정렬한다는 의미의 ORDER BY regist_day ASC를 입력한다.
'프로덕트 매니저 > PM의 데이터' 카테고리의 다른 글
[clickhouse] neighbor 활용하여 이전행/다음행 가져오기 (0) | 2023.01.03 |
---|---|
예측치를 산출하는 이유, 그리고 분석에 대한 관점 (feat. 뉴욕주민) (0) | 2022.12.30 |
회귀 모델을 통한 사업 지표 예측하기 (1) (회귀모델의 개념/성능평가) (0) | 2022.12.26 |
[SQL/Clickhouse] LIMIT n BY, 그룹별/조건별로 필요한 수만큼 추출하기 (3) | 2022.10.11 |
SQL을 활용한 코호트 분석Cohort Analysis (0) | 2022.06.12 |