본문 바로가기

[MySQL] 윈도우 함수

@silver-w2025. 8. 27. 14:10

□ Group By 와 Window Function 차이

Group by Window Function
집계된 결과만 추출한다. 기존 데이터에 집계된 값 컬럼을 추가하여 추출한다.
SELECT fra_no
             , SUM(revenue) FROM sales 
 GROUP BY fra_no;
SELECT fra_no, ym
            , revenue
            , SUM(revenue) OVER(PARTITION BY fra_no) AS totalRevenue
  FROM sales;

 

□ 윈도우 함수의 기본 틀

함수(컬럼) OVER (PARTITION BY 기준컬럼 [ORDER BY 기준컬럼])
  • 집계 함수 
    - SUM()  ||  MIN()  ||  MAX()  ||  AVG()  ||  COUNT() 
  • 순위 함수
    - RANK() : 동점 같은 순위, 동점 순위만큼 건너뛰고 다음 순위 매김
    - ROW_NUMBER() : 동점 다른 순위, ORDER BY 기준으로 순위가 매겨짐
    - DENSE_RANK() : 동점 같은 순위, 동점순위만큼 건너뛰지 않고 순차적으로 순위가 매겨짐

     
예시 점수 : 100, 95, 95, 90
RANK() ROW_NUMBER() DENSE_RANK()
1, 2, 2, 4 1, 2, 3, 4 1, 2, 2, 3

 

 

프로그래머스 PCSQL 시험에서 이걸 잊어버려서 문항을 끝까지 풀지 못했다,
심지어 2~4 문제는 전부 윈도우 함수로 풀면 쉬운 문제들.......
억지로 CTE로 풀었다지만 이로인해 불필요한 뷰 & 조인이 다수 일어나 낮은 레벨을 받았다.
향후 SQL 쿼리를 짤땐 윈도우 함수도 있음을 생각하고 풀자

 

silver-w
@silver-w :: silver-w 님의 블로그

silver-w 님의 블로그 입니다.

공감하셨다면 ❤️ 구독도 환영합니다! 🤗

목차