[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' 카테고리의 다른 글
[DBMS] 트랜잭션(Transaction) - CRUD, 4대 특징 ACID, SAVE POINT, ROLLBACK, COMMIT (0) | 2023.03.28 |
---|---|
[DBMS]SUBQUERY - ANY, ALL, IN, EXISTS (0) | 2023.03.17 |
[DBMS]GROUPING SETS - CUBE(), ROLLUP(), GROUPING SET() (0) | 2023.03.16 |
[DBMS]DBMS Review - JOIN, 데이터가공, 날짜, 문자, COUNT, MAX, MIN, AVG, SUM (0) | 2023.03.15 |
[DBMS]JOIN 2 - UNION, INTERSECT, EXCEPT (0) | 2023.03.14 |
댓글