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 |
|
1.2 |
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 |