PARTITION BY
PARTITION BY
절은 윈도 함수와 함께 사용되어 행을 그룹으로 나눠, 각 그룹을 서로 독립적으로 처리할 수 있게 합니다.
GROUP BY
와 비슷하게 동작하지만, GROUP BY
와 달리 행을 하나로 축약하지 않습니다. 모든 행을 그대로 유지한 채 윈도 함수 계산을 위해 논리적으로만 구분합니다.
Syntax
PARTITION BY
를 사용해 행을 파티션(그룹)으로 나눌 수 있습니다.
PARTITION BY 문법
SELECT column,
window_function(...) OVER (
PARTITION BY group_column
ORDER BY sort_column
) AS result
FROM table;
PARTITION BY
는 행을 그룹으로 분할합니다.ORDER BY
는 각 그룹 내에서 행을 정렬합니다.
Example: 반별 학생 순위 매기기
다음과 같은 테이블이 있다고 가정해 봅시다.
scores
name | class | score |
---|---|---|
Alex | A | 92 |
Sara | A | 95 |
Daniel | A | 88 |
Mia | B | 90 |
John | B | 85 |
Emma | B | 93 |
각 반에서 점수가 높은 순서대로 학생의 순위를 매기고 싶습니다.
PARTITION BY 사용 예
SELECT name,
class,
score,
RANK() OVER (
PARTITION BY class
ORDER BY score DESC
) AS rank_in_class
FROM scores;
쿼리 결과는 다음과 같습니다.
결과:
name | class | score | rank_in_class |
---|---|---|---|
Sara | A | 95 | 1 |
Alex | A | 92 | 2 |
Daniel | A | 88 | 3 |
Emma | B | 93 | 1 |
Mia | B | 90 | 2 |
John | B | 85 | 3 |
여기서는 PARTITION BY class
덕분에 각 반마다 독립적인 순위가 매겨집니다.
일반적으로 PARTITION BY
는 행을 그룹으로 나눠, 윈도 함수가 전체 테이블이 아닌 각 그룹 내부에서 결과를 계산하도록 합니다.
다음 내용이 궁금하다면?
코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!