요약
SQL RANK와 DENSE_RANK는 데이터의 순위를 계산할 때 사용하는 대표적인 분석 함수입니다. 두 함수 모두 순위를 부여하지만 동일한 값이 존재할 때 처리 방식이 다릅니다. SQLD 시험에서는 RANK와 DENSE_RANK의 결과 차이를 묻는 문제가 자주 출제되므로 반드시 이해해야 하는 핵심 개념입니다.
SQL RANK와 DENSE_RANK란?
SQL RANK와 DENSE_RANK는 순위를 계산하는 분석 함수(Analytic Function)입니다.
예를 들어 직원들의 급여 순위를 구하거나 매출 순위를 계산할 때 사용합니다.
실무에서는 성과 평가, 매출 분석, 고객 순위 산정 등에 활용되며 SQLD 시험에서도 높은 빈도로 출제됩니다.
두 함수 모두 순위를 계산한다는 점은 같지만 동점자 처리 방식이 다릅니다.
SQL RANK와 DENSE_RANK를 정확히 이해하면 SQLD 시험 문제를 훨씬 쉽게 해결할 수 있습니다. 더 많은 정보를 확인하고 순위 함수 개념을 익혀보세요.
SQL RANK 기본 문법
SQL RANK 기본 문법은 다음과 같습니다.
SELECT ENAME,
SAL,
RANK() OVER(ORDER BY SAL DESC) AS RANKING
FROM EMP;
위 SQL은 급여가 높은 순서대로 순위를 부여합니다.
ORDER BY 기준으로 정렬한 후 순위를 계산하는 방식입니다.
SQL RANK는 SQLD 시험에서 가장 많이 출제되는 분석 함수 중 하나입니다. 더 많은 정보를 확인하고 SQL RANK 사용법을 익혀보세요.
SQL DENSE_RANK 기본 문법
SQL DENSE_RANK 기본 문법은 다음과 같습니다.
SELECT ENAME,
SAL,
DENSE_RANK() OVER(ORDER BY SAL DESC) AS RANKING
FROM EMP;
기본 사용 방법은 SQL RANK와 거의 동일합니다.
하지만 동일한 순위가 존재할 때 다음 순위를 부여하는 방식이 다릅니다.
이 차이가 SQLD 시험에서 가장 중요한 출제 포인트입니다. 더 많은 정보를 확인하고 SQL DENSE_RANK 개념을 이해해보세요.
RANK와 DENSE_RANK 차이를 이해하는 예제
다음과 같은 급여 데이터가 있다고 가정해보겠습니다.
| 이름 | 급여 |
|---|---|
| KING | 5000 |
| SCOTT | 3000 |
| FORD | 3000 |
| JONES | 2975 |
SQL RANK 결과
SELECT ENAME,
SAL,
RANK() OVER(ORDER BY SAL DESC)
FROM EMP;
결과
| 이름 | 급여 | 순위 |
|---|---|---|
| KING | 5000 | 1 |
| SCOTT | 3000 | 2 |
| FORD | 3000 | 2 |
| JONES | 2975 | 4 |
동점자가 있으면 다음 순위가 건너뛰어집니다.
더 많은 정보를 확인하고 SQL RANK 특징을 익혀보세요.
SQL DENSE_RANK 결과
SELECT ENAME,
SAL,
DENSE_RANK() OVER(ORDER BY SAL DESC)
FROM EMP;
결과
| 이름 | 급여 | 순위 |
|---|---|---|
| KING | 5000 | 1 |
| SCOTT | 3000 | 2 |
| FORD | 3000 | 2 |
| JONES | 2975 | 3 |
동점자가 있어도 순위가 건너뛰어지지 않습니다.
이것이 SQL DENSE_RANK의 가장 큰 특징입니다.
더 많은 정보를 확인하고 SQL DENSE_RANK 개념을 정리해보세요.
SQL RANK와 DENSE_RANK 차이점 정리
SQLD 시험에서 반드시 암기해야 하는 핵심 내용입니다.
| 구분 | RANK | DENSE_RANK |
|---|---|---|
| 동점자 처리 | 동일 순위 부여 | 동일 순위 부여 |
| 다음 순위 | 건너뜀 | 건너뛰지 않음 |
| SQLD 출제 빈도 | 매우 높음 | 매우 높음 |
| 실무 활용 | 순위 경쟁 분석 | 그룹 순위 분석 |
SQLD 시험에서는 실행 결과를 보여주고 어떤 함수를 사용했는지 묻는 문제가 자주 출제됩니다.
더 많은 정보를 확인하고 SQLD 핵심 개념을 학습해보세요.
ROW_NUMBER와 비교하기
SQLD 시험에서는 RANK, DENSE_RANK, ROW_NUMBER를 함께 비교하는 문제가 매우 자주 출제됩니다.
예시 데이터
| 이름 | 급여 |
|---|---|
| KING | 5000 |
| SCOTT | 3000 |
| FORD | 3000 |
결과 비교
| 이름 | RANK | DENSE_RANK | ROW_NUMBER |
|---|---|---|---|
| KING | 1 | 1 | 1 |
| SCOTT | 2 | 2 | 2 |
| FORD | 2 | 2 | 3 |
ROW_NUMBER는 동점 여부와 상관없이 무조건 다른 번호를 부여합니다.
반면 SQL RANK와 DENSE_RANK는 동점자에게 같은 순위를 부여합니다.
더 많은 정보를 확인하고 SQL 순위 함수 차이를 이해해보세요.
PARTITION BY와 함께 사용하기
SQL RANK와 DENSE_RANK는 PARTITION BY와 함께 사용하는 경우가 많습니다.
부서별 급여 순위를 계산해보겠습니다.
SELECT ENAME,
DEPTNO,
SAL,
RANK() OVER(
PARTITION BY DEPTNO
ORDER BY SAL DESC
) AS RANKING
FROM EMP;
위 SQL은 각 부서별로 순위를 새롭게 계산합니다.
실무 데이터 분석에서도 매우 자주 사용되는 기능입니다.
더 많은 정보를 확인하고 SQL 분석 함수 활용법을 익혀보세요.
SQLD 시험에서 자주 출제되는 문제 유형
SQLD 시험에서는 다음과 같은 문제가 자주 출제됩니다.
실행 결과 예측
SELECT RANK()
OVER(ORDER BY SAL DESC)
FROM EMP;
함수 구분 문제
결과를 보여준 후
- RANK
- DENSE_RANK
- ROW_NUMBER
중 어떤 함수를 사용했는지 묻는 문제입니다.
실제 SQLD 시험에서 매우 자주 등장하는 유형입니다.
더 많은 정보를 확인하고 SQLD 기출문제를 분석해보세요.
실무에서 RANK와 DENSE_RANK 활용 사례
SQL RANK와 DENSE_RANK는 다양한 업무에서 사용됩니다.
| 업무 | 활용 사례 |
|---|---|
| 영업 분석 | 매출 순위 |
| 인사 평가 | 성과 순위 |
| 쇼핑몰 | 판매량 순위 |
| 데이터 분석 | 고객 등급 분석 |
| 제조업 | 생산량 순위 |
특히 데이터 분석 업무에서는 상위 고객이나 상위 제품을 찾을 때 매우 자주 사용합니다.
더 많은 정보를 확인하고 SQL 실무 활용 능력을 향상시켜보세요.
SQLD 시험에서 RANK와 DENSE_RANK가 중요한 이유
SQLD 시험에서는 분석 함수 관련 문제가 꾸준히 출제됩니다.
특히 다음 개념은 반드시 이해해야 합니다.
| 출제 포인트 | 중요도 |
|---|---|
| RANK 개념 | 매우 높음 |
| DENSE_RANK 개념 | 매우 높음 |
| ROW_NUMBER 비교 | 매우 높음 |
| PARTITION BY | 높음 |
| 실행 결과 예측 | 매우 높음 |
실제 SQLD 기출문제에서도 순위 함수 문제는 자주 등장합니다.
더 많은 정보를 확인하고 SQLD 핵심 개념을 정리해보세요.
자주 묻는 질문(FAQ)
SQL RANK와 DENSE_RANK 중 무엇이 더 많이 사용되나요?
상황에 따라 다르지만 데이터 분석에서는 DENSE_RANK를 사용하는 경우도 많습니다. 더 많은 정보를 확인하고 실무 활용 사례를 알아보세요.
SQLD 시험에 순위 함수 문제가 많이 나오나요?
네. RANK, DENSE_RANK, ROW_NUMBER 비교 문제는 SQLD 단골 출제 유형입니다. 더 많은 정보를 확인하고 SQLD 기출문제를 분석해보세요.
RANK에서 왜 순위가 건너뛰어지나요?
동점자 수만큼 다음 순위를 건너뛰는 방식으로 설계되었기 때문입니다. 더 많은 정보를 확인하고 순위 함수 원리를 이해해보세요.
마무리
SQL RANK와 DENSE_RANK는 순위를 계산하는 대표적인 분석 함수입니다. SQL RANK는 동점자 발생 시 다음 순위를 건너뛰고, SQL DENSE_RANK는 순위를 건너뛰지 않는다는 차이가 있습니다. SQLD 시험에서는 두 함수의 실행 결과를 비교하는 문제가 자주 출제되므로 반드시 직접 실행해보며 차이를 이해하는 것이 중요합니다. 더 많은 정보를 확인하고 다음 단계인 SQL CASE WHEN 사용법도 함께 학습해보세요.
