본문 바로가기
오래된글/DataBase

Analytical Function

by Andrew's Akashic Records 2018. 4. 15.
728x90

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 등분한 결과를 구할 수 있음



728x90

'오래된글 > 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