Computer Science/데이터베이스

SQL 윈도우 함수(WINDOW FUNCTION) - Oracle

윤재에요 2023. 6. 10. 03:32

윈도우 함수

  • 행과 행간의 관계에서 다양한 연산 처리를 할 수 있는 함수가 윈도우 함수이다.
  • 분석함수로도 알려져 있다. (ANSI 표준은 윈도우 함수이다.)
  • 윈도우 함수는 일반 함수와 달리 중첩하여 호출 될 수는 없다.

 

윈도우 함수의 종류

순위관련함수

  • RANK
  • DENSE_RANK
  • ROW_NUMBER

집계관련함수

  • SUM
  • MAX
  • MIN
  • AVG
  • COUNT

행순서관련함수

  • FIRST_VALUE
  • LAST_VALUE
  • LAG (이전)
  • LEAD (다음)

그룹내 비율관련함수

  • CUME_DIST
  • PERCENT_RANK
  • NTILE
  • RATIO_TO_REPORT

OVER()함수는 서브쿼리를 간단하게 대체하기 위해 사용됨,

오라클에서 OVER() 를 사용하면

GROUP BY나 서브쿼리를 사용하지 않고

분석 함수(SUM, MAX, COUNT)과

집계 함수(GROUP BY, ORDER BY)를 사용할 수 있는데

 

집계 함수 사용 시

서브쿼리가 지나치게 길어지는 것을 고려해보면

OVER를 사용해 쿼리 길이를 획기적으로 줄일 수 있다

 

OVER()는

분석_함수() OVER(PARTITION BY 컬럼 / ORDER BY 컬럼 / 세부 분할 기준)

으로 이루어지는데

여기서 분석 함수와 OVER()는 필수지만

OVER 안의 내용들은

필요할 경우에만 작성해주면 된다

RANGE: 논리적인 순서 만약 등수가 같다면 연봉합계는 같아짐

ROWS: 물리적인 순서 (보여지는 로우순서) 연봉합계가 로우바뀔 때 올라간다.

백분율이 0부터 시작: PERCENT_RANK()

등분: NTILE(N), N은 몇등분할지