코드의 설명은 추후에 다시 하도록 하겠습니다.
인턴 생활과 기타 잡무로 바쁘네요...ㅠ
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--분석함수 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 |