728x90
반응형
WINDOW 함수
- 레코드(행) 사이의 관계를 쉽게 정의하기 위한 함수
- ex) 매장이 위치한 지역별로 판매량 1위를 차지하는 매뉴명을 알고싶을 때 사용
SELECT WINDOW_FUNCTION ( ARGUMENTS ) OVER ( [PARTITION BY 컬럼명] [ORDER BY 컬럼명] [WINDOWING] )
FROM 테이블명 ;
- WINDOW_FUNCTION : 윈도우 함수
- 그룹 내 집계함수 : COUNT, SUM, MIN, MAX, AVG 등
- 그룹 내 순위(RANK) 함수
- RANK : 동일한 순위에 대해 동일한 순위를 부여한다., 동일한 순위를 하나의 건수로 계산하지 않는다.
- DENSE_RANK : 동일한 순위에 대해 동일한 순위를 부여한다., 동일한 순위는 하나의 건수로 계산한다.
- ROW_NUMBER : 동일한 순위에 대해 고유한 순위를 부여한다.
- 그룹 내 비율 관련 함수
- PERCENT_RANK
- 그룹 내 행 순서 함수
- ARGUMENTS : 인수 ( 컬럼명 등 함수의 작업이 이뤄지는 대상 )
- PARTITION BY : 테이블의 레코드들을 쪼개는 기준
- ORDER BY : 쪼개진 레코드들 내에서 혹은 전체 테이블에서 레코드들을 어떤 기준으로 정렬할지
- WINDOWING : 함수의 연산 대상이 되는 레코드의 범위를 정함
- RANGE : 범위를 지정해줄 때 사용
ex. RANGE BETWEEN 100 AND 200 - BETWEEN a AND b : a부터 b까지 윈도우가 적용됨
- UNBOUNDED PRECEDING : 윈도우의 시작 위치 = 첫 번째 행
- UNBOUNDED FOLLOWING : 윈도우의 마지막 위치 = 마지막 행
- CURRENT ROW : 윈도우 시작 위치가 현재 행
- RANGE : 범위를 지정해줄 때 사용
함수 | 내용 | |
WINDOW_FUNCTION 윈도우 함수 |
그룹 내 집계함수 | COUNT, SUM, MIN, MAX, AVG 등 |
그룹 내 순위(RANK) 함수 | RANK - 동일한 순위에 대해 동일한 순위를 부여한다. - 동일한 순위를 하나의 건수로 계산하지 않는다 |
|
DENSE_RANK - 동일한 순위에 대해 동일한 순위를 부여한다. - 동일한 순위는 하나의 건수로 계산한다. |
||
ROW_NUMBER - 동일한 순위에 대해 고유한 순위를 부여한다. |
||
그룹 내 비율 관련 함수 | PERCENT_RANK - 값이 아닌, 순서를 대상으로, 파티션 내에서의 순서별 백분율을 조회한다. |
|
NTILT(n) - 파티션별로 전체 건수를 n등분한 값을 반환한다. - n=4이면 4등분한 것 내에서 몇인지 조회한다. |
||
CUME_DIST - 파티션 내 전체에서 현재 행의 값 이하인 레코드 건수에 대한 누적 백분율을 조회한다. - 누적 분포 상에 0~1값을 가짐 |
||
그룹 내 행 순서 함수 |
FIRST_VALUE - 파티션 내에서 가장 처음 나오는 값 반환 - MIN 과 동일한 결과 |
|
LAST_VALUE - 파티션 내에서 가장 마지막에 나오는 값 반환 - MAX와 동일한 결과 |
||
LAG( 컬럼명, 레코드위치차이값) - 이전 행을 가져온다. |
||
LEAD(컬럼명, 레코드위치차이값, null일경우 대체값) - 다음(특정 위치의) 행을 가져온다 - default는 1이다. |
||
ARGUMENTS 인수(컬럼명 등 함수의 작업이 이뤄지는 대상) |
- | |
PARTITION BY 테이블의 레코드들을 쪼개는 기준 |
- | |
ORDER BY 쪼개진 레코드들 내에서 혹은 전체 테이블에서 레코드들을 어떤 기준으로 정렬할지 |
- | |
WINDOWING 함수의 연산 대상이 되는 레코드의 범위를 정함 SELECT WINDOW_FUNCTION(ARGUMENTS) OVER( [PARTITION BY 컬럼명] [ORDER BY 컬럼명] [WINDOWING] ) FROM 테이블명; |
RANGE : 범위를 지정해줄 때 사용 ex. RANGE BETWEEN 100 AND 200 |
|
BETWEEN a AND b : a부터 b까지 윈도우가 적용됨 | ||
UNBOUNDED PRECEDING : 윈도우의 시작 위치 = 첫 번째 행 | ||
UNBOUNDED FOLLOWING : 윈도우의 마지막 위치 = 마지막 행 | ||
CURRENT ROW : 윈도우 시작 위치가 현재 행 |
문제
정답
A : DENSE_RANK
B : RANK
C : ROW_NUMBER
문제
정답
1
여타 SQL 문과 동일하게 ODER BY 를 사용하여 오름차순, 내림차순 출력이 가능하다. 순위로 자동으로 정렬되는 것은 아니다
문제
정답
문제
정답
SUM, AVG, COUNT, MAX, MIN 집계성 함수들도 윈도우 함수로 사용할 수 있다.
문제
정답
ㄱ : E, ㄴ : E
문제
정답
WINDOING 문제
정답
UNBOUNDED PRECEDING
SQLD 목차 바로가기
728x90
반응형
'자격증 > SQLD' 카테고리의 다른 글
[SQLD 자격증] 2과목 | 옵티마이저 JOIN 설명 & 문제풀이 (0) | 2023.03.06 |
---|---|
[SQLD 자격증] 2과목 | 테이블 파티션, 옵티마이저, 인덱스 설명 & 문제풀이 (0) | 2023.03.06 |
[SQLD 자격증] 2과목 | 계층형 조회 설명 & 문제풀이 (0) | 2023.03.06 |
[SQLD 자격증] 2과목 | JOIN, UNION, MINUS, 서브쿼리 설명 & 문제풀이 (0) | 2023.03.06 |
[SQLD 자격증] 2과목 | GROUP 함수, GROUPING 설명 & 문제풀이 (0) | 2023.03.06 |
댓글