DB/Oracle

oracle 분석 함수 이용 예

seungdols 2015. 10. 7. 21:48


코드의 설명은 추후에 다시 하도록 하겠습니다. 

인턴 생활과 기타 잡무로 바쁘네요...ㅠ



--분석함수 ROW_NUMBER()
SELECT department_id
,emp_name
,ROW_NUMBER() OVER ( PARTITION BY department_id
ORDER BY department_id
,emp_name
) dep_rows
FROM employees;--부서별 사원들의 로우 넘버 출력
SELECT department_id
,emp_name
,salary
,RANK() OVER ( PARTITION BY department_id --rank의 경우 동급에 대해서 처리를 함
ORDER BY salary
) dep_rank
FROM employees;--DENSE_RANK()를 사용하면, 동급에 대해서 처리 하지 않는다.(다음 수를 건너 뛰지 않음)
SELECT department_id
,emp_name
,salary
,CUME_DIST() OVER ( PARTITION BY department_id --상대적인 누적 분포도 출력 0초과 1이하
ORDER BY salary
) dep_dist
,PERCENT_RANK() OVER ( PARTITION BY department_id --그룹 내 백분위 순위 반환 0이상 1이하
ORDER BY salary
) percentile
FROM employees;
SELECT department_id
,emp_name
,salary
,NTILE(4) OVER ( PARTITION BY department_id--인자로 넘겨주는 값만큼 분할한 결과를 반환한다.
ORDER BY salary
) NTILES
FROM employees
WHERE department_id IN ( 30, 60) ;
SELECT emp_name
,hire_date
,salary
,LAG(salary, 1, 0) OVER (ORDER BY hire_date) AS prev_sal --선행 로우 값 출력 offset 2이상이면 2개씩 계산함
,LEAD(salary, 1, 0) OVER(ORDER BY hire_date) AS next_sal --후행 로우 값 출력 offset 2이상이면 2개씩 계산함
FROM employees
WHERE department_id = 30;
반응형

'DB > Oracle' 카테고리의 다른 글

다중 Insert 쿼리 문 예  (0) 2015.10.07
window절을 이용한 쿼리 연습  (0) 2015.10.07
WITH절 이용한 쿼리 및 순환쿼리  (0) 2015.10.07
계층형 쿼리 관련  (0) 2015.10.07
Oracle sub-query에 관한 이야기  (0) 2015.09.17