분석 함수
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을 배운지 얼마 되지 않아 잘못된 내용이 있을 수 있습니다. 틀린 내용이있다면, 댓글로 달아주세요.
'DATABASE(oracleDB 11g) > SQL' 카테고리의 다른 글
[SQL]INNER JOIN과 OUTER JOIN, SELF JOIN, CROSS JOIN 에 대하여 (0) | 2019.01.30 |
---|---|
[SQL]조인(JOIN)의 기초-Equi join 과 Non-Equi Join (0) | 2019.01.29 |
[SQL]GROUP BY의 기초 (0) | 2019.01.29 |
[SQL]집합 함수의 기초 (0) | 2019.01.29 |
[SQL]decode와 case함수 (0) | 2019.01.29 |