[DBMS]분석함수

Date:     Updated:

카테고리:

태그:

[16] 분석함수

16.1. 분석함수

  • 특정 집합 내에서 결과 건수의 변화없이 해당 집합 안에서 합계 및 카운트 등을 계산 할 수 있는 함수이다.

16.2. 문법

select
  Column_1 
  , 분석함수(Column_2, Column_3, ...) over(PARTITION BY Column_4 ORDER BY Column_5)
from 
  TABLE_NAME ;
  • 사용하고자 하는 분석 함수를 쓰고 대상 컬럼을 기재 후 PARTITION BY에서 구하는 기준 컬럼을 쓰고 ORDER BY에서 정렬 컬럼을 기재한다.

16.3. 특정 컬럼의 순위 구하는 함수

  • ROW_NUMBER() : 같은 순위가 있어도 무조건 순차적으로 순위를 매긴다. (1, 2, 3, 4, 5, …)
  • RANK() : 같은 순위가 있으면 동일 순위로 매기고 그 다음 순위로 건너뛴다. (1, 1, 3, 4, …)
  • DENSE_RANK() : 같은 순위가 있으면 동일 순위로 매기고 그 다음 순위를 건너 뛰지 않는다. (1, 1, 2, 3, …)

16.4. 특정 컬럼의 첫번째 값 혹은 마지막 값을 구하는 함수

  • FIRST_VALUE()
    • 특정 컬럼의 첫번째 값을 구하는 함수
  • LAST_VALUE()

    range between UNBOUNDED PRECEDING (첫번째 로우부터) 
    and UNBOUNDED FOLLOWING (파티션의 마지막 로우까지) 추가한다.
    
    • UNBOUNDED PRECEDING : 최종 출력될 값의 맨 첫번째 row값
    • UNBOUNDED FOLLOWING : 최종 출력될 값의 맨 마지막 row값
  • DEFAULT

    range between UNBOUNDED PRECEDING
    and CURRENT ROW
    
    • UNBOUNDED PRECEDING : 최종 출력될 값의 맨 첫번째 row값
    • CURRENT ROW : 현재 row값

16.5. 특정 컬럼의 이전(PREV) 행의 값 혹은 다음(NEXT) 행의 값을 구하는 함수

  • LAG() : 이전 행의 값을 찾는다.
    • LAG(조건 , 순서, 디폴트) OVER (PARTITION BY 절)
  • LEAD() : 다음 행의 값을 찾는다.
    • LEAD(조건 , 순서, 디폴트) OVER (PARTITION BY 절)

DBMS 카테고리 내 다른 글 보러가기

댓글 남기기