SQL

[SQL] 윈도우 함수

Bay Im 2024. 3. 23. 12:58
  • 윈도우 함수 (Window Function)
    • 데이터베이스 쿼리나 데이터 분석에서 주로 사용되는 함수
    • 데이터셋을 그룹화하거나 정렬한 후에 특정 연산 적용하는데 사용
    • 분석 함수 또는 순위 함수라고도 한다.
    • 여기서 윈도우란 연산이 수행되는 데이터셋의 부분집합으로 지정된 분할 기준에 의해서 정의되며 함수가 적용되는 범위를 지정하는 역할을 한다.
  • 윈도우 함수 사용
    • 반드시 OVER 절이 필요하다.
    • OVER 절은 윈도우 함수가 작동하는 윈도우를 정의하며 파티션과 순서를 지정할 수 있다.
    • 윈도우 함수의 종류에 따라서 0~n개의 인수(arguments)가 지정될 수 있다.
    • 형식
      • SELECT 윈도우함수명(인수)
        	OVER([PARTITION BY 컬럼] [ORDER BY 컬럼] [WINDOWING절])
        FROM 테이블명;
  • 집계 윈도우 함수
    • OVER절을 사용하여 정의하는 집계 윈도우 함수는 PARTITION BY절을 사용하여 그룹화
    • 행의 데이터와 집계된 값을 함께 볼 수 있다.
    • OVER 절
      • 결과를 생성하기 위해 입력으로 고려해야 하는 행의 일부를 OVER절에서 정의
      • 예시
        • AVG(컬럼) OVER() AS 평균
    • PARTITION BY 절
      • 전체 집합을 특정 기준에 의해 소그룹으로 나누고자 할 때 OVER 절 내에서 PARTITION BY 절 사용
      • 예시
        • 컬럼 - AVG(컬럼) OVER(PARTITION BY 컬럼2) AS 차이
    • ORDER BY 절
      • OVER 절에 정렬기준 지정
      • 예시
        • SUM(컬럼) OVER(ORDER BY 컬럼2) AS 누적합
  • 순위 윈도우 함수
    • 행 간의 값을 비교하여 순위를 매기는 함수
    • 종류
      • RANK()
        • 순위 반환, 동일 순위에 동일한 숫자 값 반환 후 그 다음 순위는 해당 동일 수만큼 더해짐
      • DENSE_RANK()
        • 순위 반환, 동일 순서에 동일한 숫자 값 반환 후 그 다음 순위는 + 1
      • ROW_NUMBER()
        • 순위 반환, 모든 행에 순차적으로 번호 부여
      • PERCENT_RANK()
        • 백분율 순위 값, 0~1 사이의 값 부여
      • CUME_DIST()
        • 누적 분포 계산 (백분율)
      • NTILE(n)
        • 지정된 수의 그룹으로 수로 나눠서 해당 행이 속한 그룹 번호 반환
  • 행 순서 윈도우 함수
    • 특정 행의 위치에 있는 값을 가져올 때 사용
    • 종류
      • FIRST_VALUE()
        • 정렬된 값 집합의 첫번째 값 반환
      • LAST_VALUE()
        • 정렬된 값 집합의 마지막 값 반환
      • LAG()
        • 명시된 값을 기준으로 이전 행 값 반환
      • LEAD()
        • 명시된 값을 기준으로 이후 행 값 반환
      • NTH_VALUE(n)
        • 윈도우의 n번째 행 값 반환

'SQL' 카테고리의 다른 글

[SQL] 프로그래머스 Lv.1 풀며 정리했던 연산자, 함수들  (0) 2024.08.26
[SQL] 데이터 모델링  (0) 2024.03.23
[SQL] 제약 조건  (0) 2024.03.23
[SQL] DDL (CREATE, ALTER, DROP)  (0) 2024.03.23
[SQL] DML (INSERT, UPDATE, DELETE)  (0) 2024.03.22