오라클 SQL · 고급 질의

분석 함수 기초: OVER와 PARTITION BY

분석 함수는 행을 줄이지 않고도 집계 결과를 각 행에 함께 보여준다. OVER 절과 PARTITION BY를 이해하면 집계와 분석의 차이가 선명해진다.

분석 함수 기초: OVER와 PARTITION BY 대표 이미지

이 글에서 꼭 잡아야 할 것

분석 함수는 행을 줄이지 않고도 집계 결과를 각 행에 함께 보여준다. OVER 절과 PARTITION BY를 이해하면 집계와 분석의 차이가 선명해진다.

분석 함수는 보고서형 SQL과 데이터 분석의 연결 지점이다. GROUP BY가 결과를 줄이며 요약한다면, 분석 함수는 원본 행을 유지하면서 비교 기준값을 붙여 준다. 이 차이를 이해하면 왜 분석 함수가 강력한지 바로 체감할 수 있다.

난이도 중급
모듈 고급 질의
학습 시간 11분
핵심 키워드 OVER, PARTITION BY, Analytic

개념 지도와 이해 포인트

행을 유지하는 집계 분석 함수는 GROUP BY처럼 행을 줄이지 않는다. 원래 행을 그대로 두면서, 그 행이 속한 그룹의 통계값을 옆에 붙이는 방식이다.
PARTITION BY PARTITION BY는 분석 함수 안에서 그룹 범위를 나눈다. 부서별 평균 급여를 각 직원 행에 표시하는 식의 패턴을 만든다.
ORDER BY와 윈도우 OVER 안의 ORDER BY는 분석 순서를 정한다. 누적합, 이동평균 같은 계산에서 핵심 역할을 한다.
분석 함수 기초: OVER와 PARTITION BY 개념 다이어그램

대표 문법 패턴

SELECT employee_id,
       department_id,
       salary,
       AVG(salary) OVER (PARTITION BY department_id) AS dept_avg_salary
FROM employees;

SELECT employee_id,
       salary,
       SUM(salary) OVER (ORDER BY employee_id) AS running_salary
FROM employees;

문법 읽는 포인트

  • 분석 함수는 OVER 절과 함께 사용한다.
  • `PARTITION BY`는 그룹 경계를, `ORDER BY`는 계산 순서를 정한다.
  • 행 수를 유지한 채 요약 정보를 붙일 수 있다는 점이 핵심이다.

핵심 용어

  • OVER
  • PARTITION BY
  • Analytic

부서 평균과 개인 급여를 한 화면에서 비교하기

분석 함수는 “내 값이 그룹 기준과 얼마나 차이 나는가”를 보여 주는 데 특히 강력하다. 그룹화와 분석을 분리해서 생각하면 문장 구조가 훨씬 선명해진다.

SELECT employee_id,
       department_id,
       salary,
       AVG(salary) OVER (PARTITION BY department_id) AS dept_avg_salary,
       salary - AVG(salary) OVER (PARTITION BY department_id) AS diff_from_avg
FROM employees
ORDER BY department_id, salary DESC;

수험 체크포인트와 자주 하는 실수

시험 체크포인트

  • 분석 함수는 행을 줄이지 않는다는 점을 GROUP BY와 꼭 비교해 보자.
  • OVER 절 안의 PARTITION BY와 ORDER BY 역할을 구분해야 한다.
  • 누적합, 그룹 평균 비교 문제는 분석 함수 대표 출제 유형이다.

자주 하는 실수

  • 분석 함수 결과를 GROUP BY 결과처럼 한 행만 나올 것이라 생각하는 실수
  • OVER 바깥 ORDER BY와 OVER 안 ORDER BY를 혼동하는 실수
  • PARTITION BY가 없는 경우 전체 결과가 하나의 윈도우가 된다는 점을 놓치는 실수

연결 학습

분석 함수의 기본 틀이 잡혔다면 순위 함수로 바로 확장할 수 있다. 다음 챕터에서는 ROW_NUMBER, RANK, DENSE_RANK를 비교한다.

댓글 0

작성자 이름과 댓글 내용을 입력하면 바로 등록됩니다. 답글은 한 단계까지 지원하고, 댓글은 최대 200자까지 작성할 수 있습니다.

일반 댓글 작성

댓글을 불러오는 중입니다.

같은 카테고리에서 이어서 읽기

지금 읽은 글과 가까운 흐름의 글 5개를 모아 두었습니다. 바로 앞뒤 문맥을 이어서 읽고 싶을 때 가장 편합니다.