이 글에서 꼭 잡아야 할 것
분석 함수는 행을 줄이지 않고도 집계 결과를 각 행에 함께 보여준다. OVER 절과 PARTITION BY를 이해하면 집계와 분석의 차이가 선명해진다.
분석 함수는 보고서형 SQL과 데이터 분석의 연결 지점이다. GROUP 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개를 모아 두었습니다. 바로 앞뒤 문맥을 이어서 읽고 싶을 때 가장 편합니다.
상호연관 서브쿼리와 EXISTS
상호연관 서브쿼리는 바깥 질의의 각 행이 안쪽 질의에 영향을 준다. EXISTS와 함께 익히면 “관련 데이터가 있는가”를 검사하는 문제를 매우 자연스럽게 풀 수 있다.
SET 연산자: UNION, UNION ALL, INTERSECT, MINUS
SET 연산자는 여러 SELECT 결과를 집합처럼 합치거나 비교하는 문법이다. 결과 구조가 같아야 하며, 중복 제거 여부를 정확히 구분하는 것이 핵심이다.
CASE와 DECODE로 조건 분기하기
조건 분기는 데이터를 사람이 읽기 좋은 형태로 바꾸는 핵심 기술이다. 표준 SQL의 CASE와 오라클 고유 함수 DECODE를 함께 익히면 문제 해석 폭이 넓어진다.
순위 함수: ROW_NUMBER, RANK, DENSE_RANK
순위 함수는 정렬된 데이터에 순서를 매긴다. 같은 값이 나왔을 때 번호가 어떻게 붙는지 이해하면 상위 N건 문제와 동점 처리 문제를 확실히 잡을 수 있다.
계층형 질의: START WITH, CONNECT BY, LEVEL
오라클은 트리 구조 데이터를 위한 계층형 질의 문법을 제공한다. 조직도, 카테고리 트리, 부모-자식 관계를 SQL 한 문장으로 풀 수 있다는 점이 큰 장점이다.
댓글을 불러오는 중입니다.