1. 윈도우 함수(Window Function)란?
◎ 윈도우 함수(Window Function)는 행과 행 간의 관계를 정의하기 위해 제공되는 함수입니다.
◎ 순위, 합계, 평균, 행 위치 등을 조작할 수 있습니다.
◎ 윈도우 함수 2편 주소 : https://rh-cp.tistory.com/92
2. 윈도우 함수의 구조
◎ SELECT WINDOW_FUNCTION(ARGUMENTS)
OVER (PARTITION BY 컬럼 ORDER BY WINDOWING 절)
FROM 테이블명;
◇ ARGUMENTS(인수) -- 윈도우 함수에 따라 0~N개의 인수를 설정합니다.
◇ PARTITION BY -- 전체 집합을 기준에 의해 소그룹으로 나눕니다.
◇ ORDER BY -- 항목에 의해 정렬합니다.
◇ WINDOWING -- 행 기준의 범위를 정합니다.
ROWS는 물리적 결과의 행 수, RANGE는 논리적인 값에 의한 범위입니다.
◎ WINDOWING
◇ ROWS -- 부분집합인 윈도우 크기를 물리적 단위로 행의 집합을 지정합니다.
◇ RANGE -- 논리적인 주소에 의해 행 집합을 지정합니다.
◇ BETWEEN ~ AND -- 윈도우의 시작과 끝의 위치를 지정합니다.
◇ UNBOUNDED PRECEDING -- 윈도우의 시작 위치가 첫 번째 행임을 의미합니다.
◇ UNBOUNDED FOLLOWING -- 윈도우의 마지막 위치가 마지막 행임을 의미합니다.
◇ CURRENT ROW -- 윈도우의 시작 위치가 현재 행임을 의미합니다.
3. 윈도우 함수의 사용
3-1. 순위 함수(RANK FUNCTION)
◎ 순위 함수(RANK Function)
-- 특정 항목과 파티션에 대해 순위를 계산할 수 있는 함수입니다.
-- RANK, DENSE_RANK, ROW_NUMBER 함수가 있습니다.
◇ RANK -- 순위를 계산합니다. 동일한 순위는 동일한 값이 부여됩니다.
▷ 첫 RANK()는 sal이 가장 높은 행부터 내림차순으로 조회합니다.
▷ 두 번째 RANK()는 job으로 파티션을 만들고, job별 sal순위를 내림차순으로 조회합니다.
◇ DENSE_RANK -- 동일한 순위를 하나의 건수로 계산합니다
※ DENSE = 밀집한
▷ RANK()는 같은 순위가 있으면(2위) 그 다음 순위(3위)가 없어집니다.
▷ DENSE_RANK()는 같은 순위가 있어도 건수로 계산하기 때문에 3위가 있습니다.
◇ ROW_NUMBER -- 동일한 순위에 대해 고유의 순위를 부여합니다.
▷ ROW_NUMBER는 동일한 순위가 있더라도 고유의 순위를 부여합니다.
3-2. 집계 함수(AGGREGATE FUNCTION)
◎ 집계 함수(AGGREGATE Function)
-- SUM, AVG, COUNT, MAX, MIN과 같은 집계 함수를 제공합니다.
▷ SUM은 합계를 나타냅니다 즉 mgr로 파티션을 나누어 해당 mgr의 emp들의 sal합계를 나타냅니다.
▷ AVG는 평균을 나타냅니다. 해당 mgr의 emp들의 sal 평균을 나타냅니다.
▷ MAX는 최대값을 나타냅니다. 해당 mgr의 emp중 sal이 가장 높은 sal값을 나타냅니다.
▷ MIN은 최소값을 나타냅니다. 해당 mgr의 emp중 sal이 가장 낮은 sal값을 나타냅니다
▷ COUNT는 갯수를 나타냅니다. 해당 mgr의 emp의 갯수를 나타냅니다.
'Programming > DataBase' 카테고리의 다른 글
(ORACLE) PROCEDURE 에서 원하는 데이터를 찍어보자! (2) | 2019.07.26 |
---|---|
[DataBase]윈도우 함수(Window Function)에 대해 알아보자! 2편 (0) | 2019.03.03 |
[DataBase]그룹 함수(Group Function)에 대해 알아보자! (0) | 2019.03.02 |
[DataBase]서브쿼리(Subquery)란 무엇일까? (0) | 2019.03.01 |
[DataBase]계층형 조회(Connect by)를 사용하는 법을 알아보자! (1) | 2019.03.01 |