프로그래밍/SQL / / 2022. 10. 8. 16:33

[SQL] 분석함수 문법 LAG LEAD RANK ROW_NUMBER DENSE_RANK

1. 분석함수

 

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

 

1) 문법

select
C1 , 분석함수(C2, C3, ...) over(PARTITION BY C4 ORDER BY C5)
from TABLE_NAME
;

 

- 사용하고자 하는 분석 함수를 쓰고 대상 컬럼을 기재 후 PARTITION BY에서 구하는 기준 컬럼을 쓰고 ORDER BY에서 정렬 컬럼을 기재한다.

 

2) 특정 컬럼의 순위 구하는 함수

 

- ROW_NUMBER() : 같은 순위가 있어도 무조건 순차적으로 순위를 매긴다. (1, 2, 3, 4, 5, …)

- RANK() : 같은 순위가 있으면 동일 순위로 매기고 그 다음 순위로 건너뛴다. (1, 1, 3, 4, …)

- DENSE_RANK() : 같은 순위가 있으면 동일 순위로 매기고 그 다음 순위를 건너 뛰지 않는다. (1, 1, 2, 3, …)

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

 

- FIRST_VALUE()

 

- LAST_VALUE()

- RANGE BETWEEN UNBOUNDED PRECEDING (첫번째 로우부터) AND UNBOUNDED FOLLOWING (파티션의 마지막 로우까지) 추가한다.

 

- DEFAULT

RANGE BETWEEN UNBOUNDED PRECEDING
AND CURRENT ROW



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

- LAG() : 이전 행의 값을 찾는다.

- LEAD() : 다음 행의 값을 찾는다.

 

LIST
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유