Analytical Function
그룹내 순위 관련 함수
예)
Select name, id
rank() over (order by name) rank,
rank() over(partition by name order by id) name_rank
from s_dept;
- RANK
ORDER BY를 포함한 Query 문에서 특정 항목(컬럼)에 대한 순위를 구하는 함수
- DENSE_RANK
RANK 함수와 흡사하지만, 동일한 순위를 하나의 건수로 취금하는 것이 틀린 점
- ROW_NUMBER
RANK 함수가 동일한 값에 대해서는 동일한 순위를 부여하는데 반해 ROW_NUMBER 함수는 유니크한 순위를 부여
일반 그룹 관련 함수
예)
Select mgr, ename, hiredate, sal,
AVG(sal) OVER (PARTITION BY mgr ORDER BY hiredate)
ROW BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS c_mavg
FROM emp
- AVG
파티션 별 윈도우의 평균을 구할 수 있음
- SUM
파티션 별 윈도우의 합을 구할 수 있음
- MAX
파티션 별 윈도우의 최대값을 구할 수 있음
- MIN
파티션 별 윈도우의 최소값을 구할 수 있음
- COUNT
파티션 별 윈도우의 건수를 구할 수 있음
그룹 내 데이터 순서 관련 함수
예)
Select deptno, ename, sal,
FIRST_VALUE(ename) OVER (PARTITION BY depton ORDER BY sal DESC
ROWS UNBOUNDED PRECEDING) AS rich_emp
FROM emp
- FIRST_VALUE
파티션 별 윈도우에서 가장 먼저 나온 값을 구함
- LAST_VALUE
파티션 별 윈도우에서 가장 나중에 나온 값을 구함
- LAG
파티션 별 윈도우에서 이전 몇 번째 행의 값을 가져올 수 있음
- LEAD
파티션 별 윈도우에서 이후 몇 번째 행의 값을 가져올 수 있음
그룹 내 비율가 관련 함수
예)
Select deptno, ename, sal,
PERCENT_RANK() OVER (PARTITION BY deptno ORDER BY sal) AS pr
FROM emp
- PRECENT_RANK
파티션 별 윈도우에서 제일 먼저 나오는 것을 0 으로 제일 늦게 나오는 것을 1 로 하여, 값이 아닌 행의 순서별 백분율을 구함 결과 값은 0~1 사이의 범위를 가짐
- CUME_DIST
파티션 별 윈도우의 전체건수에서 현재 행보다 작거나 같은 건수에 대한 누적백분율을 구함
결과 값은 0~1 사이의 범위를 가짐
- RATIO_TO_REPORT
파티션 내 전체 SUM 값에 대한 행별 컬럼값의 백분율을 소수점으로 구할 수 있음
결과 값은 0~1 사이의 범위를 가짐
- NTILE
파티션 별 전체 건수를 argument 값으로 n 등분한 결과를 구할 수 있음
'오래된글 > DataBase' 카테고리의 다른 글
Big3 Join (0) | 2018.04.15 |
---|---|
ANSI/X3/SPARC (0) | 2018.04.15 |
행을 열로 확장 (0) | 2018.04.15 |
한달을 요일별로 구함 (0) | 2018.04.15 |
인덱스 컬럼의 매칭율 높이는 방법 (0) | 2018.04.15 |