반응형
SMALL
주요개념
→ 모든 윈도우 함수의 ‘전제조건은 윈도우 함수 내에서’ 이다.
함수형태 비교
→ CUME_DIST()
→ NTILE(숫자)
→ RATIO_TO_REPORT(컬럼명)
→ PERCENT_RANK()
CUME_DIST 함수
CUMULATIVE는 누적이라는 뜻이다.
CUME_DIST 함수는 현재행보다 같거나 작은 건수들에 대하여 ‘누적 백분율’을 구한다.
SELECT TEAM, ENAME, GOAL,
ROUND(CUME_DIST() OVER (PARTITION BY TEAM ORDER BY GOAL),2) AS CD
FROM TABLE1;
TEAM ENAME GOAL CD
------- --------- ------- ---------
A SON 30 0.33
A KAKA 30 0.67
A MESSY 25 1
B NEYMAR 25 0.5
B HOLLAN 12 1
→ GOAL이 동점일 경우 CUME_DIST 비율값도 동점에 대해 누적된 값으로 나타난다.
→ PERCENT_RANK 함수는 0부터 시작하는 반면,
→ CUME_DIST 함수는 값이 항상 0 보다 크다.
NTILE 함수
TILE은 사각형의 타일을 의미한다.
전체행을 타일처럼 ‘N개로 배분’ 한다는 뜻이다.
SELECT TEAM, ENAME, GOAL,
NTILE(4) OVER (ORDER BY GOAL DESC) AS TILE
FROM TABLE1;
TEAM ENAME GOAL TILE
------- ---------- -------- -------
A SON 30 1
A KAKA 30 1
A MESSY 25 2
B NEYMAR 25 3
B HOLLAND 12 4
→ NTILE(4) 이므로 전체 테이블을 4등분한다.
→ 전체테이블5 / 타일4 = 1.2
→ 4그룹 1행씩 나머지 2는 앞그룹에 순서대로
RATIO_TO_REORT 함수
RATIO는 비율을 뜻한다.
’해당값 / 전체값(sum)의 비율’을 나타낸다.
SELECT TEAM, ENAME, GOAL,
ROUND(RATIO_TO_REPORT(GOAL) OVER (PARTITION BY TEAM), 2) AS RATIO
FROM TABLE1;
TEAM ENAME GOAL RATIO
------- --------- ------- ---------
A SON 28 0.70 -- 28/40
A KAKA 25 0.66
A MESSY 15 0.36
B NEYMAR 15 0.60 -- 15/25
B HOLLAND 10 0.40
PERCENT_RANK 함수
PERCENT는 백분율이다.
파티션별 각 행의 순서에 따라 ‘0~1 까지 백분율’을 구한다.
SELECT TEAM, ENAME, GOAL,
PERCENT_RANK() OVER (PARTITION BY TEAM ORDER BY GOAL) AS PR
FROM TABLE1;
TEAM ENAME GOAL PR
------- --------- ------- ---------
A SON 28 0
A KAKA 25 0.5
A MESSY 15 1
B NEYMAR 15 0
B HOLLAND 10 1
C JIDAN 8 0
C PELE 8 0
C PARK 6 0.5 -- 잘 이해가 ..
C KI 3 0.75
C HWANG 0 1
반응형
LIST
'DB > SQL 기초' 카테고리의 다른 글
관계형 DB & DB 모델링. 혼동되는 용어 구분하기 (*중복주의) (0) | 2022.09.06 |
---|---|
테이블 참조- PRIMARY KEY, FOREIGN KEY (*무결성 제약조건 해결방법) (0) | 2022.08.18 |
WINDOW 함수 - WHERE절 역할을 하는 ROWS, RANGE (0) | 2022.08.15 |
WINDOW 함수 한눈에 알아보기 (0) | 2022.08.15 |
SELECT 문 - selection, projection, join 기본원리 (0) | 2022.08.15 |