Akashic Records

Analytical Function 본문

오래된글/DataBase

Analytical Function

Andrew's Akashic Records 2018. 4. 15. 22:23
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
Comments