데이터 분석

[플레이그라운드] 1분기 동안의 고객별 인기 상품 Top3 본문

SQL/solvesql

[플레이그라운드] 1분기 동안의 고객별 인기 상품 Top3

딱한아이 2025. 3. 5. 11:08
문제 상황

 

고객별 인기 상품 정보를 바탕으로 교차 판매 및 상향 판매 전략을 수립하기 위한 비즈니스 시나리오를 가정하고, 1분기 동안의 고객별 인기 상품 Top3을 조회해 보았다.

 

단, 주문 수량이 10/9/9/8였다면 상위 주문 수량 3개는 10/9/8 이므로 총 4개의 상품명을 출력한다.

 

Solution
WITH step1 AS (
  SELECT customer_id
       , product_name
       , SUM(quantity) AS total_quantity
  FROM records
  WHERE order_date BETWEEN '2020-01-01' AND '2020-03-31'
  GROUP BY customer_id, product_name

), step2 AS (
  SELECT *
       , DENSE_RANK() OVER (PARTITION BY customer_id ORDER BY total_quantity DESC) AS dense_rk
  FROM step1

)
SELECT customer_id
     , product_name
     , total_quantity
FROM step2
WHERE dense_rk <= 3
ORDER BY customer_id, total_quantity DESC
  • step1 cte :
    1분기 동안의 고객, 상품명을 기준으로 주문 수량의 합계를 집계

  • step2 cte :
    고객별 주문 수량을 내림차순 정렬하여 순위를 부여

  • 최종 select : 
    주문 수량이 많은 상위 3개의 상품명만 필터링

BT-11530, BV-11245 고객의 인기 상품 Top3

 

💡위 결과를 바탕으로 연관 상품을 추천하거나 더 높은 가치의 상품 구매를 유도하는 전략을 세워, 고객당 평균 구매액(ARPU)을 증가시키는 데 활용할 수 있을 것 같다.