[SQL]TIL 24일차

Cherta·2024년 5월 21일
0

[TIL]

목록 보기
25/30

윈도우 함수(WINDOW FUNCTION)

  • 윈도우 함수(WINDOW FUNCTION) : 행과 행 간의 관계를 정의하기 위해서 제공되는 함수

    • 윈도우 함수는 GROUP BY 구문과 병행하여 사용할 수 없음
    • 윈도우 함수로 인해 결과 건수가 줄어들지는 않음(집계 제회)
    • 윈도우 함수와 group by 구문은 둘 다 파티션을 분할한다는 의미에서 유사
    • 다른 함수와 달리 중첩해서 사용은 못하지만, 서브쿼리에는 사용할 수 있음
  • 윈도우 함수의 종류

종류함수
순위RANK, DENSE_RANK, ROW_NUMBER
집계SUM, MAX, MIN, AVG, COUNT
순서FIRST_VALUE, LAST_VALUE, LAG, LEAD
비율RATIO_TO_REPROT, CUME_DIST
# 윈도우 함수 기본문법 
SELECT WINDOW_FUNCTION () OVER([PARTITION BY 컬럼] [ORDER BY 컬럼])
FROM 테이블명
  • 순위 함수

    • RANK : 특정 컬럼의 순위를 구하는 함수(동일한 값에 대해서는 같은 순위를 부여하며 중간 순위를 비운 값이 출력)
      RANK() OVER(PARTITION BY 컬럼1 ORDER BY 컬럼2)
    • DENSE_RANK : RANK와 작동법은 동일하나, 동일한 값에 대해서는 같은 순위를 부여하고 중간 순위를 비우지 않음
      DENSE_RANK() OVER(PARTITION BY 컬럼1 ORDER BY 컬럼2)
    • ROW_NUMBER : ANK, DENSE_RANK는 동일한 값에 대해 동일 순위를 부여하지만 ROW_NUMBER은 동일한 값이어도 고유한 순위를 부여
      ROW_NUMBER() OVER(PARTITION BY 컬럼1 ORDER BY 컬럼2)
  • 순서 함수

    • FIRST_VALUE : 가장 먼저 나온 값을 구하여 출력(처음 나온 행만 가져오며 MIN함수를 쓰는 것과 결과가 동일)
      FIRST_VALUE(컬럼1) OVER(PARTITION BY 컬럼2 ORDER BY 컬럼3)
    • LAST_VALUE : 가장 마지막에 나온 값을 구하여 출력(나중에 나온 행만 가져오며 MAX함수를 쓰는 것과 결과가 동일)
      LAST_VALUE(컬럼1) OVER(PARTITION BY 컬럼2 ORDER BY 컬럼3)
    • LAG : 전 N 번째의 행을 가져오는 함수(N 은 최대값으로 3을 가지며, 기본값은 1)
      LAG(컬럼1, 숫자) OVER (PARTITION BY 컬럼2 ORDER BY 컬럼3)
    • LEAD : 이후 N행의 값을 가져오는 함수(N 은 최대값으로 3을 가지며, 기본값은 1)
      LEAD(컬럼1, 숫자) OVER (PARTITION BY 컬럼2 ORDER BY 컬럼3)
  • 비율 함수

    • RATIO_TO_REPORT : 파티션 내 전체 SUM값에 대한 행별 백분율을 소수점으로 출력(결과값은 0~1 사이이며, 비율의 합은 1, MySQL 에서는 지원하지 않음)
      RATIO_TO_REPORT(컬럼1) OVER (PARTITION BY 컬럼2 ORDER BY 컬럼3)
    • CUME_DIST : 파티션별 전체건수에서 현재 행보다 작거나 같은 건수에 대한 누적백분율을 출력
      CUME_DIST() OVER (PARTITION BY 컬럼1 ORDER BY 컬럼2)

0개의 댓글