[SQL] Window Function - RANK, SUM

Sun choi·2024년 7월 10일

NEW 지식

목록 보기
1/34
post-thumbnail

안녕하세요. 오늘 배운 내용 중 제일 새로웠던 개념입니다.
Window Function 은 각 행의 관계를 정의하기 위한 함수로 그룹 내의 연산을 쉽게 만들어줍니다. 자체적으로 제공해주는 기능을 이용하면 조금 더 편리한데 바로 이 기능들이 Window function 으로 제공되고 있습니다.

🍄 Window Function 의 기본 구조

window_function(argument) over (partition by 그룹 기준 컬럼 order by 정렬 기준)

  • window_function : 기능 명을 사용해줍니다. (sum, avg 와 같이 기능명이 있습니다)
  • argument : 함수에 따라 작성하거나 생략합니다.
  • partition by : 그룹을 나누기 위한 기준입니다. group by 절과 유사.
  • order by : window function 을 적용할 때 정렬 할 컬럼 기준을 적어줍니다.

🍄 rank

SELECT cuisine_type,
restaurant_name,
cnt_order,
ranking
FROM
(
select cuisine_type,
restaurant_name,
cnt_order,
rank() over(partition by cuisine_type order by cnt_order desc) ranking
from
(
select cuisine_type,
restaurant_name,
count(1) cnt_order
from food_orders
group by 1, 2
)a
)b
where ranking <= 3

  • rank() over( partition by 묶어줄곳 order by 어떤 순서인지)
    이렇게 쓰는 것!
    마지막에 where ranking <= 3 붙여줘서 3위까지 보여주기!

🍄 SUM

select cuisine_type,
restaurant_name,
order_count,
sum(order_count) over (partition by cuisine_type) sum_cuisine_type,
sum(order_count) over (partition by cuisine_type order by order_count, restaurant_name) cumulative_sum

from
(
select cuisine_type, restaurant_name, count(1) order_count
from food_orders
group by 1, 2
) a

  • sum(이것의 합계) over(partition by 묶어줄 곳 order by 정렬기준)

  • sum(order_count) over (partition by cuisine_type) sum_cuisine_type
    카테고리별 합

  • sum(order_count) over (partition by cuisine_type order by order_count, restaurant_name) cumulative_sum
    카테고리별 누적합

profile
풀스택 개발자의 공부기록 📖

0개의 댓글