개발자 항해

Top-N분석 본문

DB/Oracle

Top-N분석

리치Y 2022. 9. 1. 09:16

1. Top_N 분석이란? 

Top-N 질의는 column에서 가장 큰 n개의 값 또는 가장 작은 n개의 값을 요청함. 예를 들어 ‘가장 적게 팔린 제품 10가지는?’, 또는 ‘회사의 최상위 소득자 3명은?’ 등..

 

2. Top-N분석 구조

 

SELECT [column_list], ROWNUM

FROM    (SELECT [column_list]

                FROM table

                ORDER BU TOP-N_column)

WHERE ROWNUM <=N;

 

ROWNUM은 논리적인 컬럼

서브쿼리에서 메인쿼리로 값이 넘어올때 ROWNUM이 각 행에 1부터 시작하는 순차 값을 할당한다.

 

= >  EMP테이블에서 최상위 소득자 3명의 이름과 급여를 표시한다면?

 

select ROWNUM as RANK, last_name, salary

from (select last_name, salary from employees order by salary  DESC)

where ROWNUM <=3;

 

값이 넘어오는 원리는 

 

테이블이 이렇게 생겼다치면

e_id last_name ..... salary .....
100 A   3000  
101 B   2500  
102 C   5000  
103 D   4000  
104 E   5500  
105 F   2800  

 

아래와 같이 rownum값이 부여된 행이 3개가 넘어오게된다. (DESC로 정렬후 rownum값을 부여)

rownum last_name salary
1   <=3 만족 E 5500
2   <=3 만족 C 5000
3   <=3 만족 D 4000
4   <=3 불만족 A 3000
이하 표시안됨(필요없으므로) F 2800

 

r<N , r <= N 가 쓰인다.

r >N 은 안쓰인다. 기본적으로 r에 1이 셋팅되므로 처음부터 false가 나와서 반환되는 값이 없다.  

 

 

 

만약

: EMP테이블에서 최상위 소득자 3명의 이름과 급여를 표시한다면?

 

 

위와같이 작성하면 된다.