그룹 내 순위 및 그룹 별 집계를 구할 때 유용하게 사용 가능
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;
'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 |