티스토리 뷰
한동안 놓아두었던 SQL 공부를 시작하면서 공부한 기록을 남겨보기로 합니다..
뇌를 자극하는 오라클 프로그래밍을 보면서 공부했습니다.
분석함수(ANALYTIC FUNCTION)란, 말그대로 테이블에 있는 데이터들을 특정용도로 분석하여 그 결과를 반환하는 함수를 의미.
[구문 형식]
분석함수 ( 파라미터 1, 파라미터 2, ....)
OVER ( <QUERY_PARTITION 절>
<ORDER BY 절>
<WINDOWING 절>
)
[예시]
SELECT DEPARTMENT_ID , LAST_NAME, SALARY,
SUM(SALARY) OVER PARTITION BY DEPARTMENT_ID ORDER BY LAST_NAME) CUMM_SAL --누적연봉
FROM EMPLOYEES;
◇ 순위함수(RANKING FUNCTION)
: 특정그룹에 따라 순위를 매기는 기능, ORDER BY와 달리ㅣ 순위함수들은 계산된 순위 값 그 자체를 반환.
RANK(), DENSE_RANK(), ROW_NUMBER()
◎ RANK() : 순위를 반환하는 함수(1,2,2,4...)
◎ DENSE_RANK() : 순위를 반환하는 함수(1,2,2,3,4....: 동점자감안한 빈순위 없이 리턴)
◎ RANK() : 순위를 반환하는 함수(1,2,3,4,5)
◇ FIRST 와 LAST
집계함수 KEEP ( DENSE_RANK FIRST[LAST] ORDER BY expr [ASC|DESC] ) OVER (PARTITION BY ....)
SELECT departmend_id,
MAX(emplyee_id ||' '|| last_name )
KEEP (DENSE_RANK FIRST ORDER BY salary DESC) 최대급여
MAX(salary) 최대값,
MIN(employee_id ||' '|| last_name )
KEEP (DENSE_RANK LAST ORDER BY salary DESC) 최소급여
MIN(salary) 최소값
FROM employees
GROUP BY department_id ;
◎ NEILE() : 대상데이터들을 특정 기준으로 분할하여 그 결과값 분석
◎ CUME_DIST :
◎ PERCENT_RANK
◇ 윈도우함수
: 분석함수를 사용할 때 계산대상이 되는 로우의 그룹을 의미
◇ 기타 분석함수들
[구문 형식]
LAG (expr, offset, default) OVER ( PARTITION BY 절 )
LEAD(expr, offset, default) OVER ( PARTITION BY 절 )
◎ LAG: 계산대상 로우들을 Partition By 절로 구분하여, expr 에 명시된 값을 기준으로 이전 로우의 값을 반환.
◎ LEAD: 계산대상 로우들을 Partition By 절로 구분하여, expr 에 명시된 값을 기준으로 이후 로우의 값을 반환.
'SQL' 카테고리의 다른 글
Chapter 04.오라클 식구들(데이터베이스객체)_01 (0) | 2018.10.24 |
---|