망각에 재주 있는 나를 위해 기록하는 곳.

윈도우 함수(WINDOW FUNCTION) | over() 본문

DB

윈도우 함수(WINDOW FUNCTION) | over()

baobabtree 2022. 3. 19. 17:12

윈도우 함수는 행과 행간의 관계를 쉽게 정의하기 위해 만든 함수

group by나 서브쿼리를 사용하지 않고 분석함수와 집계함수를 사용할 수 있게한다.

 

형식

SELECT WINDOW_FUNCTION(ARGUMENTS) OVER( PARTITION BY 컬럼 / ORDER BY 컬럼 / WINDOWING절 )

FROM 테이블

  • WINDOW_FUNCTION과 OVER()는 필수.
  • OVER() 안의 내용은 필요한 경우에 쓰면됨.

 

ARGUMENTS(인수)

  • 윈도우 함수에 따라서 0~N개의 인수를 설정.

PARTITION BY

  • 어떤 컬럼을 기준으로 나눌지 의미한다. (group by같은 기능)

ORDER BY

  • 정렬기준

WINDOWING절 (세부분할기준)

  • PARTITION BY나 ORDER BY로 충분히 분할하지 못했을 경우 사용하며, ORDER BY를 사용한 상태에서만 사용가능하다.

 

윈도우 함수(WINDOW_FUNCTION) 종류

순위(RANK)관련 함수 (RANK, DENSE_RANK, ROW_NUMBER)

 

  • RANK : 순위를 구하는 함수. 동일한 값이 대해서 동일한 순위를 부여하고 그 다음에 오는 순위는 동일한 순위만큼 건너뛴다. 
점수 순위
100 1
90 2
90 2
80 4
70 5
  • DENSE_RANK : 동일한 순위를 하나의 건수로 취급.
점수 순위
100 1
90 2
90 2
90 2
70 3
  • ROW_NUMBER : 동일한 값이라도 순위가 있음.
점수 순위
100 1
90 2
90 3
90 4
70 5

 

이외에도 그룹 내 집계관련, 행 순서 관련, 비율 관련 함수가 있다. 

나중에 사용하게 되면 공부하고 추가...