개발자 항해
Top-N분석 본문
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명의 이름과 급여를 표시한다면?
위와같이 작성하면 된다.
'DB > Oracle' 카테고리의 다른 글
Oracle 프로그램 설치 및 DB생성 (리눅스 운영체제) - 2 (0) | 2022.09.01 |
---|---|
Oracle 프로그램 설치 및 DB생성 (리눅스 운영체제) - 1 (0) | 2022.09.01 |
Data Dictionary - 사용자 관리 (0) | 2022.08.30 |
데이터 제어어(DCL)- 유저생성,권한부여 및 회수 (0) | 2022.08.25 |
데이터 역모델링 (0) | 2022.08.19 |