2011년 6월 1일 수요일

Analytical Function

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

댓글 없음:

댓글 쓰기

블록체인 개요 및 오픈소스 동향

블록체인(block chain) 블록체인은 공공 거래장부이며 가상 화폐로 거래할때 발생할때 발생할 수 있는 해킹을 막는 기술. 분산 데이터베이스의 한 형태로, 지속적으로 성장하는 데이터 기록 리스트로서 분산 노드의 운영자에 의한 임의 조작이 불가...