본문 바로가기
개발기록/Oracle & SQLD

SQL 윈도우 함수, RANK, 집계, 행순서, 비율함수

by 쎄정 2022. 5. 24.
728x90
반응형

목차

    윈도우 함수란

    행간의 관계에서 다양한 연산 처리를 할 수 있는 함수이다.

    일반함수와 달리 중첩하여 호출 불가능하다.

     

    종류

    순위함수 

    • RANK, 중복 값들에 대해서 동일 순위로 표시하고, 중복 순위 다음값은 중복 개수 만큼 떨어진 순위로 출력
    • DENSE_RANK, 중복 값들에 대해서 동일 순위로 표시하고, 중복 순위 다음 값에 대해서는 순차적으로 순위
    • ROW_NUMBER, 중복 값들에 대해서도 순차적인 표시를 한다

     

    집계함수

    • SUM
    • MAX
    • MIN
    • AVG
    • COUNT

     

    순서함수

    • FIRST_VALUE
    • LAST_VALUE
    • LAG
    • LEAD

     

    비율함수

    • CUME_DIST
    • PERCENT_RANK
    • NTILE(N), N의 숫자만큼 등분한다. 
    • RATIO_TO_REPORT

     

    윈도우 함수 문법

    SELECT 
      윈도우함수(인자) AS (PARTITION BY 컬럼 ORDER BY 컬럼)
      윈도우절(ROWS|RANGE BETWEEN UNBOUND PRECEDING|CURRENT ROW AND UNBOUNDED FOLLOWING|CURRENT ROW)
    FROM 테이블명;

     

     

    윈도우 함수 : 다양한 윈도우 함수를 사용가능

     

    인자 : 함수에 따라 0~n개의 인자를 사용한다.

     

    PARTITION BY : ORDER BY에 기재한 정렬 기준에 윈도우 함수의 결과가 달라질 수 있다.

     

    윈도우절 : 연산을 처리하는 대상이 되는 행의 범위를 지정할 수 있다.

    • ROWS, 물리적인 결과행의 수
    • RANGE, 논리적인 값에 의한 범위
    • BETWEEN ~ AND, 행 범위의 시작과 끝을 지정하는데 사용한다.
    • UNBOUNDED PRECEDING, 시작 위치가 전체 행의 첫 번째 행임을 뜻한다.
    • UNBOUNDED FOLLOWING, 마지막 위치가 전체 행의 마지막 행임을 뜻한다.
    • CURRENT ROW, 시작 위치가 현재 행임을 뜻한다.
    728x90
    반응형

    댓글