sql

partition by

임이레 2023. 7. 26. 22:13

그룹 내 순위 및 그룹 별 집계를 구할 때 유용하게 사용 가능 

 

e.g 일별로 많이 구매한 고객들에게 소정의 선물을 지급하려 한다. 7월 한달간 일별로 구매 금액 기준 많이 지출한 고객의 Top3를 뽑아라.

 

SELECT * 

FROM (

SELECT DATE_FORMAT(purchased_at - interval 9 hour , '%y-%m-%d') as p_date 

             , a.customer_id 

             , sum(price)

            , dense_rank() over (partition by DATE_FORMAT(purchased_at - interval 9 hour , '%y-%m-%d') order by sum(price) desc ) as rank_revenue

FROM tbl_purchase a LEFT JOIN tbl_customer b ON a.customer_id = b.customer_id 

WHERE purchased_at >= '2020-07-01' and purchased_at < '2020-08-01'

GROUP BY 1,2 ) sub_t

WHERE rank_revenue < 4;

결과
rank 참조

'sql' 카테고리의 다른 글

database의 종류  (0) 2023.11.19
database  (0) 2023.11.19
증감폭과 증감율을 구해보자  (0) 2023.07.25
교집합 INTERSECT / 차집합 MINUS  (0) 2023.07.22
UNION , UNION ALL  (0) 2023.07.22