728x90
두 함수는 모두 특정 기준으로 그룹화 한다는 공통이 있다.
[차이점]
GROUP BY는 행을 압축하고
PARTITION BY는 윈도우 함수로 원본 행은 유지한다.
이게 가장 큰 차이점이라고 생각했다.
(윈도우 함수는 "새로운 열을 하나 만들겠다" 는 선언과 같다.)
원본 테이블
| ID(직원 ID) | Department(부서) | Salary(급여) |
| 1 | Sales | 5000 |
| 2 | Sales | 6000 |
| 3 | Engineering | 7500 |
| 4 | Engineering | 8500 |
| 5 | HR | 4500 |
GROUP BY 를 했을 때 변화
SELECT
Department,
AVG(Salary) AS Department_Average
FROM
Employees
GROUP BY
Department;
결과 (원본 5행 ➡️ 3행으로 압축됨)
| ID(직원 ID) | Department(부서) | Salary(급여) |
| 1 | Sales | 5000 |
| 2 | Sales | 6000 |
| 3 | Engineering | 7500 |
| 4 | Engineering | 8500 |
| 5 | HR | 4500 |
⬇️
| Department(부서) | Department_Average(부서 평균) |
| Engineering | 8000 |
| HR | 4500 |
| Sales | 5500 |
PARTITION BY를 했을 때 변화
SELECT
ID,
Department,
Salary,
AVG(Salary) OVER (PARTITION BY Department) AS Department_Average
FROM
Employees;
결과 (원본 5행 ➡️ 5행으로 유지됨, 열 추가됨)
| ID(직원 ID) | Department(부서) | Salary(급여) |
| 1 | Sales | 5000 |
| 2 | Sales | 6000 |
| 3 | Engineering | 7500 |
| 4 | Engineering | 8500 |
| 5 | HR | 4500 |
⬇️
| ID(직원 ID) | Department(부서) | Salary(급여) | Department_Average |
| 1 | Sales | 5000 | 8000 |
| 2 | Sales | 6000 | 8000 |
| 3 | Engineering | 7500 | 4500 |
| 4 | Engineering | 8500 | 5500 |
| 5 | HR | 4500 | 5500 |
728x90
'데이터베이스' 카테고리의 다른 글
| 프로그래머스: 대장균의 크기에 따라 분류하기 2 (0) | 2025.11.03 |
|---|---|
| 프로그래머스: 오랜 기간 보호한 동물(1) 최적화 하기 (0) | 2025.11.03 |
| SQLD 제 2과목 - 제 3장 관리구문 (2) | 2024.11.17 |
| SQLD 제 2과목 - 제 2장 SQL 활용 (1) | 2024.11.17 |
| SQLD 제 2과목 - 제 1장 SQL 기본 (0) | 2024.11.16 |