본문 바로가기
SQLD/SQL 기본 및 활용

윈도우 함수(WINDOW FUNCTION) 1 - 종류 및 문법

by 밍구몬 2019. 7. 4.

WINDOW FUNCTION 종류

 

WINDOW FUNCTON 종류는 크게 다섯 개의 그룹으로 분류할 있다. (벤더별로 지원하는 함수에는 차이가 있음)

 

  1. 그룹 순위(RANK) 관련 함수는 RANK, DENSE_RANK, ROW_NUMBER 함수가 있음.
  2. 그룹 집계(AGGREGATE) 관련 함수는 일반적으로 많이 사용하는 SUM, MAX, MIN, AVG, COUNT 함수가 .
  3. 그룹 순서 관련 함수 FIRST_VALUE, LAST_VALUE, LAG, LEAD 함수가 있음
    ORACLE에서만 지원되는 함수이기는 하지만, FIRST_VALUE, LAST_VALUE 수는 MAX, MIN함수와 비슷한 결과를 얻을 있고, LAG, LEAD 함수는 DW에서 유용하게 사용되는 기능
  4. 그룹 비율 관련 함수는 CUME_DIST, PERCENT_RANK, NTILE, RATIO_TO_REPORT 함수가 있음.
    CUME_DIST, PERCENT_RANK
    함수는 ANSI/ISO 표준과 ORACLE DBMS에서 지원하고 있으며, NTILE 함수는 ANSI/ISO SQL 표준에는 없지만, ORACLE, SQL SERVER에서 지원하고 있다.
    RATIO_TO_REPORT 함수는 ORACLE에서만 지원하는 함수이다.
  5. 선형 분석을 포함한 통계 분석 관련 함수가 있다.
     

CORR, COVAR_POP, COVAR_SAMP, STDDEV, STDDEV_POP, STDDEV_SAMP, VARIANCE, VAR_POP, VAR_SAMP, REGR_(LINEAR REGRESSION), REGR_SLOPE, REGR_INTERCEPT, REGR_COUNT, REGR_R2, REGR_AVGX, REGR_AVGY, REGR_SXX, REGR_SYY, REGR_SXY

 

WINDOW FUNCTION SYNTAX

 

  • WINDOW 함수에는 OVER 문구가 키워드로 필수 포함됨.

 

SELECT WINDOW_FUNCTION (ARGUMENTS)

OVER ( [PARTITION BY 컬럼] [ORDER BY ] [WINDOWING ] )

FROM 테이블

 

  • WINDOW_FUNCTION : 기존에 사용하던 함수도 있고, 새롭게 WINDOW 함수용으로 추가된 함수도 있음.
  • ARGUMENTS(인수) : 함수에 따라 0 ~ N개의 인수가 지정될 있음.
  • PARTITION BY : 전체 집합을 기준에 의해 소그룹으로 나눌 있음.
  • ORDER BY : 어떤 항목에 대해 순위를 기정할 ORDER BY 절을 기술
  • WINDOWING : 함수의 대상이 되는 기준의 범위를 강력하게 지정할 있음. ROWS 물리적인 결과 행의 수를, RANGE 논리적인 값에 의한 범위를 나타내는데, 중의 하나를 선택해서 사용할 있다. 다만, WINDOWING 절은 SQL SERVER에서 지원하지 않음.

WINDOW 절

ROWS |  RANGE BETWEEN
UNBOUNDED PRECEDING | CURRUNT RPW | VALUE_EXPR PRECEDING/FOLLOWING
AND
UNBOUNDED FOLLOWING | CURRENT ROW |  VALUE_EXPR PRECEDING/FOLLOWING
  • ROWS : 물리적인 ROW 단위로 행 집합을 지정 ( 현재행을 기준으로 몇개의 행을 포함하는지 )
  • RANGE : 논리적인 상대번지로 행 집합을 지정 ( 현재행을 기준으로 어떤 값 범위를 포함하는지 )
  • BETWEEN ~ AND 절 : 윈도우의 시작과 끝 위치를 지정
  • UNBOUNDED PRECEDING : PARTITION의 첫 번째 로우에서 윈도우가 시작
  • UNBOUNDED FOLLOWING : PARTITION의 마지막 로우에서 윈도우가 시작
  • CURRENT ROW : 윈도우의 시작이나 끝 위치가 현재 로우