✔ 윈도우 함수
윈도우 함수란
- 행과 행간의 관계를 정의하거나 행과 행간을 비교, 연산하는 함수
- GROUP BY 절을 이용하지 않고 함수의 인수로 지정한 속성을 범위로 하여 속성의 값을 집계할 때 사용
- PARTITION과 GROUP BY 구문은 의미적으로 유사
- PARTITION 구문이 없으면 전체 집합을 하나의 PARTITION으로 정의한 것과 동일
- 윈도우 함수 적용 범위는 PARTITION을 넘을 수 없음
SELECT [PREDICATE] [테이블명.]속성명 [AS 별칭][, [테이블명.]속성명, …]
[, 그룹함수(속성명) [AS 별칭]]
[, WINDOW함수 OVER (PARTITION BY 속성명1, 속성명2, …
ORDER BY 속성명3, 속성명4, …)]
FROM 테이블명[, 테이블명, …]
[WHERE 조건]
[GROUP BY 속성명, 속성명, …]
[HAVING 조건]
[ORDER BY 속성명 [ASC | DESC]];
RANK
- ORDER BY를 포함한 쿼리문에서 특정 칼럼에 대한 순위를 구하는 함수
- 특정 범위(PARTITION) 내에서 순위를 구할 수도 있고 전체 데이터에 대한 순위를 구할 수도 있음
- 동일한 값에 대해서는 동일한 순위를 부여하며 중간 순위를 비움
- 예) 1등 1명, 2등 2명 : 1 2 2 4
DENSE_RANK
- ORDER BY를 포함한 쿼리문에서 특정 칼럼에 대한 순위를 구하는 함수
- 동일한 순위를 하나의 건수로 취급하며 중간 순위를 비우지 않음
- 예) 1등 1명, 2등 2명 : 1 2 2 3
ROW_NUMBER
- ORDER BY를 포함한 쿼리문에서 특정 칼럼에 대한 순위를 구하는 함수
- 동일한 값이라도 고유한 순위를 부여
- 예) 1등 1명, 2등 2명 : 1 2 3 4
FIRST_VALUE
- 파티션별 윈도우에서 가장 먼저 나온 값을 구하는 함수
- SQL Server에서는 지원하지 않음
LAG
- 파티션별 윈도우에서 이전 몇 번째 행의 값을 가져올 수 있는 함수
- SQL Server에서는 지원하지 않음
LEAD
- 파티션별 윈도우에서 이후 몇 번째 행의 값을 가져올 수 있는 함수
- SQL Server에서는 지원하지 않음
RATIO_TO_REPORT
- 파티션 내 전체 SUM(칼럼)값에 대한 행별 칼럼 값의 백분율을 소수점으로 구할 수 있음
- 결과값은 > 0 & <= 1의 범위를 가짐
- SQL Server에서는 지원하지 않음
PERCENT_RANK
- 파티션별 윈도우에서 제일 먼저 나오는 것을 0으로, 제일 늦게 나오는 것을 1로 하여 값이 아닌 행의 순서별 백분율을 구함
- 결과값은 >= 0 & <= 1의 범위를 가짐
- SQL Server에서는 지원하지 않음
CUME_DIST
- 파티션별 윈도우의 전체건수에서 현재 행보다 작거나 같은 건수에 대한 누적백분율을 구함
- 결과값은 > 0 & <= 1의 범위를 가짐
- SQL Server에서는 지원하지 않음
NTILE
- 파티션별 전체 건수를 argument 값으로 N 등분한 결과를 구함
'Certificate > SQL개발자' 카테고리의 다른 글
[SQL개발자] SQL 최적화 기본 원리 - 옵티마이저와 실행계획 (0) | 2023.10.20 |
---|---|
[SQL개발자] SQL 활용 - 절차형 SQL (0) | 2023.10.20 |
[SQL개발자] SQL 활용 - 그룹 함수 (0) | 2023.10.20 |
[SQL개발자] SQL 활용 - 서브쿼리 (0) | 2023.10.20 |
[SQL개발자] SQL 활용 - 계층형 질의와 셀프 조인 (0) | 2023.10.20 |
✔ 윈도우 함수
윈도우 함수란
- 행과 행간의 관계를 정의하거나 행과 행간을 비교, 연산하는 함수
- GROUP BY 절을 이용하지 않고 함수의 인수로 지정한 속성을 범위로 하여 속성의 값을 집계할 때 사용
- PARTITION과 GROUP BY 구문은 의미적으로 유사
- PARTITION 구문이 없으면 전체 집합을 하나의 PARTITION으로 정의한 것과 동일
- 윈도우 함수 적용 범위는 PARTITION을 넘을 수 없음
SELECT [PREDICATE] [테이블명.]속성명 [AS 별칭][, [테이블명.]속성명, …]
[, 그룹함수(속성명) [AS 별칭]]
[, WINDOW함수 OVER (PARTITION BY 속성명1, 속성명2, …
ORDER BY 속성명3, 속성명4, …)]
FROM 테이블명[, 테이블명, …]
[WHERE 조건]
[GROUP BY 속성명, 속성명, …]
[HAVING 조건]
[ORDER BY 속성명 [ASC | DESC]];
RANK
- ORDER BY를 포함한 쿼리문에서 특정 칼럼에 대한 순위를 구하는 함수
- 특정 범위(PARTITION) 내에서 순위를 구할 수도 있고 전체 데이터에 대한 순위를 구할 수도 있음
- 동일한 값에 대해서는 동일한 순위를 부여하며 중간 순위를 비움
- 예) 1등 1명, 2등 2명 : 1 2 2 4
DENSE_RANK
- ORDER BY를 포함한 쿼리문에서 특정 칼럼에 대한 순위를 구하는 함수
- 동일한 순위를 하나의 건수로 취급하며 중간 순위를 비우지 않음
- 예) 1등 1명, 2등 2명 : 1 2 2 3
ROW_NUMBER
- ORDER BY를 포함한 쿼리문에서 특정 칼럼에 대한 순위를 구하는 함수
- 동일한 값이라도 고유한 순위를 부여
- 예) 1등 1명, 2등 2명 : 1 2 3 4
FIRST_VALUE
- 파티션별 윈도우에서 가장 먼저 나온 값을 구하는 함수
- SQL Server에서는 지원하지 않음
LAG
- 파티션별 윈도우에서 이전 몇 번째 행의 값을 가져올 수 있는 함수
- SQL Server에서는 지원하지 않음
LEAD
- 파티션별 윈도우에서 이후 몇 번째 행의 값을 가져올 수 있는 함수
- SQL Server에서는 지원하지 않음
RATIO_TO_REPORT
- 파티션 내 전체 SUM(칼럼)값에 대한 행별 칼럼 값의 백분율을 소수점으로 구할 수 있음
- 결과값은 > 0 & <= 1의 범위를 가짐
- SQL Server에서는 지원하지 않음
PERCENT_RANK
- 파티션별 윈도우에서 제일 먼저 나오는 것을 0으로, 제일 늦게 나오는 것을 1로 하여 값이 아닌 행의 순서별 백분율을 구함
- 결과값은 >= 0 & <= 1의 범위를 가짐
- SQL Server에서는 지원하지 않음
CUME_DIST
- 파티션별 윈도우의 전체건수에서 현재 행보다 작거나 같은 건수에 대한 누적백분율을 구함
- 결과값은 > 0 & <= 1의 범위를 가짐
- SQL Server에서는 지원하지 않음
NTILE
- 파티션별 전체 건수를 argument 값으로 N 등분한 결과를 구함
'Certificate > SQL개발자' 카테고리의 다른 글
[SQL개발자] SQL 최적화 기본 원리 - 옵티마이저와 실행계획 (0) | 2023.10.20 |
---|---|
[SQL개발자] SQL 활용 - 절차형 SQL (0) | 2023.10.20 |
[SQL개발자] SQL 활용 - 그룹 함수 (0) | 2023.10.20 |
[SQL개발자] SQL 활용 - 서브쿼리 (0) | 2023.10.20 |
[SQL개발자] SQL 활용 - 계층형 질의와 셀프 조인 (0) | 2023.10.20 |