본문 바로가기

Programming/DataBase

[DataBase]윈도우 함수(Window Function)에 대해 알아보자! 1편

728x90
반응형



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의 갯수를 나타냅니다.


반응형