Oracle에는 그룹 짓기와 순위 결정을 동시에 할 수 있다.
바로 Window_function을 사용하는 것이다.
형식은 아래와 같다.
window_function (args) over ([partition by절][order by절][windowing절])
- args 함수인자(컬럼명) 0개~n개
- partition by : 전체 집합을 다시 그룹핑하기 위한 구문
- order by : 행간의 정렬
- windowing절 : 대상행을 지정
Rank()
위 Employee 테이블에서 부서별(Dept_code) 급여 순위를 조회하고 싶을때 간단하게 rank함수를 사용하여 데이터를 뽑아낼 수 있다.
select
emp_name, salary,
rank() over(partition by dept_code order by salary desc) "RANK"
from employee;
Dense_rank()
rank() 함수는 중복된 값이 있다면 중복된 만큼 건너뛰고 순위를 부여한다.
만약, 건너뜀 없이 순위를 매기고 싶으면 dense_rank()를 사용하면 된다.
select
emp_name,
salary,
rank() over(order by salary desc) "rank",
dense_rank() over(order by salary desc) "rank"
from
employee;
'DataBase > Oracle' 카테고리의 다른 글
Oracle Cloud 19c, Java Project 연동하기 [도레 코딩] (0) | 2022.03.22 |
---|