인공지능/SQL

오라클 SQL - Top - N 분석

해피밀세트 2020. 3. 19. 18:30
반응형

 

 

SQL에서 Top-N분석을 하기 위해서는 rank() over()문을 사용한다.

1.1) rank()는 중복 순위 다음 순위를 건너뛰고

1.2) dense_rank()는 중복 순위 다음 순위를 건너뛰지 않는다.

 

rank() over()에서 over()은 분석함수이며 괄호 안에

2.1) order by를 사용하여 정렬하거나

2.2) partition by 사용하여 분류별 랭크를 지정할  있.

2.3) 또한 select절의 group함수 뒤에 over()을 붙이면 group by절을 사용하지 않아도 되며

2.4) group함수 뒤에 over(order by) 붙이면 정렬 누적 연산을 구할 수있다.

 

 

 

1. rank와 dense_rank

1.1

select rank() over(order by salary desc) as rank, last_name, salary
from employees;

1.2

select dense_rank() over(order by salary desc) as rank, last_name, salary
from employees;

 

 

 

2. 분석함수 over()

2.1

select rank() over(order by salary desc) as rank_1, 
       dense_rank() over(order by salary desc) as rank_2,
       last_name, salary
from employees;
2.2

select rank() over(partition by manager_id order by salary desc) as rank_1, 
       rank() over(partition by department_id order by salary desc) as rank_2,
       last_name, salary
from employees;
2.3

select last_name, salary, sum(salary) over() as sum_sal
from employees;
2.4

select last_name, salary, sum(salary) over(order by last_name) as sum_sal
from employees;
반응형

'인공지능 > SQL' 카테고리의 다른 글

SQL문 처리 단계  (0) 2020.03.18
오라클 SQL 오류 모음  (0) 2020.02.29
오라클 SQL - ROWID와 INDEX  (0) 2020.02.16
오라클 SQL - Data 처리 방법  (0) 2020.02.14
오라클 SQL - 시퀀스(Sequence) 사용하기  (0) 2020.02.13