이 글에서 꼭 잡아야 할 것
순위 함수는 정렬된 데이터에 순서를 매긴다. 같은 값이 나왔을 때 번호가 어떻게 붙는지 이해하면 상위 N건 문제와 동점 처리 문제를 확실히 잡을 수 있다.
순위 함수는 단순 정렬을 넘어 순번을 데이터에 부여하는 단계다. 부서별 급여 상위 3명, 카테고리별 최신 글 1건처럼 실무에서 자주 필요한 문제를 간결하게 해결할 수 있다. 동점 처리 방식 차이를 명확히 기억하는 것이 가장 중요하다.
개념 지도와 이해 포인트
대표 문법 패턴
SELECT employee_id,
department_id,
salary,
ROW_NUMBER() OVER (PARTITION BY department_id ORDER BY salary DESC) AS rn,
RANK() OVER (PARTITION BY department_id ORDER BY salary DESC) AS rnk,
DENSE_RANK() OVER (PARTITION BY department_id ORDER BY salary DESC) AS drnk
FROM employees;
문법 읽는 포인트
- 순위 함수는 반드시 정렬 기준이 필요하다.
- 동점 처리 차이를 예시 데이터로 직접 비교해 두면 기억이 쉽다.
- 상위 N건 추출은 보통 바깥 질의에서 순번 조건을 건다.
핵심 용어
- ROW_NUMBER
- RANK
- DENSE_RANK
부서별 급여 상위 3명 구하기
상위 N건 문제는 먼저 윈도우 함수로 순번을 만들고, 바깥에서 필요한 순번만 남기는 2단계 구조로 읽으면 매우 안정적이다.
SELECT *
FROM (
SELECT employee_id,
department_id,
salary,
ROW_NUMBER() OVER (PARTITION BY department_id ORDER BY salary DESC) AS rn
FROM employees
)
WHERE rn <= 3
ORDER BY department_id, rn;
수험 체크포인트와 자주 하는 실수
시험 체크포인트
- ROW_NUMBER와 RANK의 차이는 동점 처리 여부와 순번 건너뜀 여부로 정리하자.
- PARTITION BY가 있으면 그룹별 순위, 없으면 전체 순위다.
- 상위 N건 문제는 정렬 기준을 먼저 확인해야 한다.
자주 하는 실수
- 동점이 있는데도 ROW_NUMBER 결과를 순위처럼 해석하는 실수
- RANK와 DENSE_RANK의 빈 순위 여부를 혼동하는 실수
- 순위 함수 결과를 같은 SELECT에서 바로 WHERE로 필터링하려는 실수
연결 학습
순위 함수가 익숙해지면 구조적 데이터 표현으로 넘어갈 수 있다. 다음 챕터에서는 오라클 특유의 계층형 질의 CONNECT BY를 다룬다.
댓글 0
작성자 이름과 댓글 내용을 입력하면 바로 등록됩니다. 답글은 한 단계까지 지원하고, 댓글은 최대 200자까지 작성할 수 있습니다.
같은 카테고리에서 이어서 읽기
지금 읽은 글과 가까운 흐름의 글 5개를 모아 두었습니다. 바로 앞뒤 문맥을 이어서 읽고 싶을 때 가장 편합니다.
SET 연산자: UNION, UNION ALL, INTERSECT, MINUS
SET 연산자는 여러 SELECT 결과를 집합처럼 합치거나 비교하는 문법이다. 결과 구조가 같아야 하며, 중복 제거 여부를 정확히 구분하는 것이 핵심이다.
CASE와 DECODE로 조건 분기하기
조건 분기는 데이터를 사람이 읽기 좋은 형태로 바꾸는 핵심 기술이다. 표준 SQL의 CASE와 오라클 고유 함수 DECODE를 함께 익히면 문제 해석 폭이 넓어진다.
분석 함수 기초: OVER와 PARTITION BY
분석 함수는 행을 줄이지 않고도 집계 결과를 각 행에 함께 보여준다. OVER 절과 PARTITION BY를 이해하면 집계와 분석의 차이가 선명해진다.
계층형 질의: START WITH, CONNECT BY, LEVEL
오라클은 트리 구조 데이터를 위한 계층형 질의 문법을 제공한다. 조직도, 카테고리 트리, 부모-자식 관계를 SQL 한 문장으로 풀 수 있다는 점이 큰 장점이다.
PIVOT, UNPIVOT, WITH절 활용
데이터 형태를 회전시키거나 중간 결과를 이름 붙여 재사용하면 복잡한 SQL도 훨씬 읽기 쉬워진다. PIVOT, UNPIVOT, WITH절은 보고서형 SQL에서 특히 빛나는 도구다.
댓글을 불러오는 중입니다.