본문으로 건너뛰기
실습하기

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

nameclassscore
AlexA92
SaraA95
DanielA88
MiaB90
JohnB85
EmmaB93

각 반에서 점수가 높은 순서대로 학생의 순위를 매기고 싶습니다.

PARTITION BY 사용 예
SELECT name,
class,
score,
RANK() OVER (
PARTITION BY class
ORDER BY score DESC
) AS rank_in_class
FROM scores;

쿼리 결과는 다음과 같습니다.

결과:

nameclassscorerank_in_class
SaraA951
AlexA922
DanielA883
EmmaB931
MiaB902
JohnB853

여기서는 PARTITION BY class 덕분에 각 반마다 독립적인 순위가 매겨집니다.


일반적으로 PARTITION BY는 행을 그룹으로 나눠, 윈도 함수가 전체 테이블이 아닌 각 그룹 내부에서 결과를 계산하도록 합니다.

다음 내용이 궁금하다면?

코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!