□ 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 쿼리를 짤땐 윈도우 함수도 있음을 생각하고 풀자
'SQL' 카테고리의 다른 글
| [MYSQL]특정 값 존재 여부 확인하기 (SUM(), EXISTS) (0) | 2025.08.27 |
|---|---|
| [MYSQL] 2진법 변환 및 비트 비교(BIT_OR) (0) | 2025.07.27 |
| GROUP BY 후 조건 개수 세기: SUM() vs COUNT() 어떤 걸 써야 할까? (0) | 2025.07.03 |
| [MYSQL] SQL의 논리적 실행 순서 예외(GROUP BY, HAVING) (0) | 2025.07.01 |
| [MYSQL] 날짜를 계산하는 주요 함수 (0) | 2025.07.01 |

