DATABASE(oracleDB 11g)/SQL

[SQL] 분석 함수

SEUNGSAMI 2019. 1. 29. 15:12

분석 함수



10g 부터 추가된 내용

일반적인 group function이 하나의 집단에 하나의 결과만 return 되는 것에 비해, 여러 가지 기준을 적용해 여러 results를 return 할 수 있다.


다음 예시를 보자

1
2
3
select last_name, salary,
first_value(salary) over(order by salary desc) 첫번째값연봉
from employees;
cs

이경우 desc가 있으면 첫번째값(최고연봉) asc가 있으면 첫번째값(최저연봉) 이러한 식으로 출력이 된다.


처리 대상이 되는 행의 집단을 window 라고 한다.


1
2
3
select first_name 이름, salary 연봉,
first_value( salary ) over( order by salary desc rows 3 preceding ) 최고연봉
from employees;
cs

rows n preceding : 위로 n줄

rows n following : 아래로 n줄 


########재정리 필요########


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
select last_name 이름, salary 연봉,
last_value(salary) over (order by salary desc rows between 2preceding and 2 following) 최저연봉
from employees;
 
select last_name 이름, salary 연봉, 
count(*) over(order by salary desc) 누계
from employees;
 
select last_name 이름, salary 연봉,
sum(salary) over(order by salary desc) 연봉누계
from employees
 
select last_name 이름, salary 연봉,
row_number() over(order by salary desc) 순위
from employees;
 
select last_name 이름, salary 연봉,
rank() over(order by salary desc) 순위
from employees;
 
select last_name 이름, salary 연봉,
dense_rank() over(order by salary desc) 순위
from employees;
cs


SQL을 배운지 얼마 되지 않아 잘못된 내용이 있을 수 있습니다. 틀린 내용이있다면, 댓글로 달아주세요.