Continuous Challenge

[불친절한 SQL 프로그래밍] [15장] Top-N 쿼리 - 15.1 기본 문법 (ROWNUM 방식, 분석함수(ROW_NUMBER, PERCENT_RANK) 방식) 본문

Study/불친절한 SQL 프로그래밍

[불친절한 SQL 프로그래밍] [15장] Top-N 쿼리 - 15.1 기본 문법 (ROWNUM 방식, 분석함수(ROW_NUMBER, PERCENT_RANK) 방식)

응굥 2019. 12. 12. 09:08
728x90
728x90

15.1.1 ROWNUM 문법

ORDER BY 절로 행을 정렬하고, 정렬된 행을 ROWNUM 슈도 칼럼으로 제한한다.

 

ROWNUM 슈도 칼럼은 행이 반환되는 순서대로 순번을 반환한다.

1부터 시작하고 행이 반환될 때마다 순번이 증가한다.

 

Top-N 쿼리는 시스템 성능에 미치는 영향이 크기 때문에 작성 표준을 신중하게 결정해야 한다. 현재까지는 ROWNUM 방식을 가장 많이 사용하고 있다.

 

SELECT empno, sal, ROWNUM AS rn WHERE ROWNUM = 2;

위의 쿼리는 결과가 반환되지 않는다. ROWNUM 슈도 칼럼은 1부터 시작하고 행이 반환될 때마다 순번이 증가하기 때문에 ROWNUM = 2 조건은 항상 FALSE 다.

 

ROWNUM 슈도 칼럼은 < 조건이나 <= 조건을 사용해야 한다.

 

sal을 오름차순으로 정렬하여 상위 5개의 행을 조회할 때,

이 쿼리는 WHERE절로 5개의 행을 무작위로 제한한 후, ORDER BY절로 5개의 행을 정렬했기 때문에 의도한 결과가 반환되지 않는다.
의도한 결과를 얻기 위해서는 위와 같이 인라인 뷰를 사용해야 한다. 

 

15.1.2 분석 함수 방식

분석 함수 방식은 순위 분석 함수를 사용한다.

ROW_NUMBER 함수를 사용한 Top-N쿼리
PERCENT_RANK 함수를 사용하면 백분율에 의한 Top-N 쿼리를 작성할 수 있다.

 

728x90
728x90
Comments