SQL문제풀이/solvesql
[SQL풀이][solvesql][난이도 3] 쇼핑몰의 일일 매출액과 ARPPU
정호랭이
2024. 4. 28. 21:22
https://solvesql.com/problems/daily-arppu/
solvesql.com
문제이해
- 이커머스 사이트의 일별 매출, 일별 결제고객수, 일별 결제고객당 평균 결제금액 (ARPPU)를 구하라
- ARPPU : Average Revenue Per Paying Users (결제고객당 평균 결제금액)
- 계산식 : ARPPU = daily revenue / # paying users
- ARPPU : Average Revenue Per Paying Users (결제고객당 평균 결제금액)
- 조건
- 2018년 1월 1일 이후 내역만 조회
- 날짜기준 오름차순 정렬
- 테이블
- orders
- order_id, customer_id, order_purchase_timestamp(구매시각)
- order_payments
- order_id, payment_value
- orders
접근방법
- order_id를 기준으로 두 테이블(orders, order_payments) JOIN
- DATE 함수를 활용하여 날짜 정보만 획득 -> dt 컬럼 생성
- 위에서 생성한 dt컬럼을 기준으로 GROUP BY 실행
- COUNT 고유 customer_id -> pu 컬럼 생성
- SUM payment_value -> revenue_daily 컬럼 생성
- revenue_daily / pu 계산 -> arppu 컬럼 생성
- 2018년 1월 1일 이후 데이터 필터링
- dt 컬럼 기준 오름차순 정렬
풀이코드
SELECT
DATE(o.order_purchase_timestamp) AS dt,
COUNT(DISTINCT o.customer_id) AS pu,
SUM(op.payment_value) AS revenue_daily,
ROUND( SUM(op.payment_value) / COUNT(DISTINCT o.customer_id), 2) AS arppu
FROM olist_orders_dataset AS o
LEFT JOIN olist_order_payments_dataset AS op USING (order_id)
WHERE dt >= '2018-01-01'
GROUP BY dt;