Sql
윈도우함수 ≒ 분석함수 ≒ 순위함수
pakker
2021. 3. 29. 16:44
1. 순위 관련 함수 : RANK, DENSE_RANK, ROW_NUMBER
2. 그룹내 집계 관련 함수 : SUM, MAX, MIN, AVG, COUNT
3. 행 순서 관련 함수 : FIRST_VALUE, LAST_VALUE, LAG, LEAD
4. 그룹내 비율 관련 함수 : CUME_DIST, PERCENT_RANK, NTILE, RATIO_TO_REPORT
5. 선형분석을 포함한 통계 분석관련 함수 : ...(생략)......... 통계에 특화된 내용임
1. 순위
: 순위를 매겨줌.
rank | 순위를매겨줌. 차이점 : 1등이 두명이면 그다음은 3위로 표시 |
dense_rank | 순위를매겨줌 차이점 : 1등이 두명이여도 그다음은 2위로 표시 |
ROW_NUMBER | 순위를매겨줌 차이점 : 1등이 두명이여도 rowid가 적은행부터 1등을 매겨줌. 같은 값이라도 1,2로 따로 나옴 |
2. 집계 (보통 잘 알고있으니까 패스)
3. 그룹내 행 순서함수
FIRST_VALUE | min이랑 비슷 |
LAST_VALUE, | max랑 비슷 |
LAG | 이전 몇번째 행의 값을 가져올 수 있다. ex. select ENAME, HIREDATE, SAL LAG(SAL,2,0) over (order by HIREDATE) as PREV_SAL from EMP where JOB='SALESMAN' sal의 두행 앞의 SALARY를 가져오고 값이 없는 경우에는 0을 default로 넣어준다 |
LEAD | 이후 몇번째 행의 값을 가져올 수 있다. ex. LEAD(HIREDATE,1,0) 위와 같음 |
4. 그룹내 비율함수
RATIO_TO_REPORT | 파티션 내 전체 sum 값에 대한 행별 칼럼 값의 백분율을 소수점으로 구함 |
PERCENT_RANK, | 파티션 별 윈도우에서 제일 먼저 나오는 것을 0으로, 제일 늦게 나오는 것을 1로 하여 값이 아닌 행의 순서별 백분율을 구한다. |
NTILE, | 파티션별 윈도우의 전체 건수에허 현재 행보다 작거나 같은 건수에 대한 누적백분율 |
CUME_DIST, | 파티션 별 전체 건수를 인자 값으로 n등분한 결과 |