[SQLD 퀴즈] 윈도우 함수 - 순위함수(1)

사원 데이터에서 급여가 높은 순서를 구하는 아래 SQL 문장의 ㉠ 안에 들어갈 함수명을 작성하시오.

-------------     아               래   -----------------

SELECT JOB, ENAME, SAL, 
    ㉠ ( ) OVER (ORDER BY SAL DESC) QQ1
 FROM EMP

 

[EMP]

JOB

ENAME

SAL

QQ1

PRESIDENT

KING

5000

1

ANALYST

FORD

3000

2

ANALYST

SCOTT

3000

2

MANAGER

JONES

2975

4

MANAGER

BLAKE

2850

5

MANAGER

CLARK

2450

6

SALESMAN

ALLEN

1600

7

SALESMAN

TURNER

1500

8

CLERK

MILLER

1300

9

SALESMAN

WARD

1250

10

SALESMAN

MARTIN

1250

10

CLERK

ADAMS

1100

12

CLERK

JAMES

950

13

CLERK

SMITH

800

14

 

[출처] http://www.dbguide.net/da.db?cmd=snb13_view&boardGroupUid=6&boardConfigUid=81&boardUid=152370

 

 

 

 

 

 

* 정답 및 해설 *

 

정답 :RANK

RANK 함수는 ORDER BY를 포함한 QUERY 문에서 특정 항목(칼럼)에 대한 순위를 구하는 함수이다. 이때 특정 범위(PARTITION) 내에서 순위를 구할 수도 있고 전체 데이터에 대한 순위를 구할 수도 있다. 또한 동일한 값에 대해서는 동일한 순위를 부여하게 된다.
 

[출처] http://www.dbguide.net/da.db?cmd=snb13_view&boardGroupUid=6&boardConfigUid=81&boardUid=152453

 

 

 

세 가지 그룹 내 순위함수 비교

 

1. RANK()

 

SELECT JOB, ENAME, SAL, RANK( ) OVER (ORDER BY SAL DESC) QQ1
FROM EMP;

 

 

 

2. DENSE_RANK()

 

SELECT JOB, ENAME, SAL, DENSE_RANK( ) OVER (ORDER BY SAL DESC) QQ1
FROM EMP;

 

 

 

3. ROW_NUMBER()

 

SELECT JOB, ENAME, SAL, ROW_NUMBER( ) OVER (ORDER BY SAL DESC) QQ1
FROM EMP;