[sql] 끝값(NTH_VALUE) 함수
SQL에서 끝값(NTH_VALUE) 함수는 윈도우 함수 중 하나로, 특정 순서에 있는 행 값을 반환하는 데 사용됩니다. 이 함수는 특히 순위가 있는 데이터에 적용되며, 데이터 집계 및 분석에 유용하게 활용될 수 있습니다.
사용법
끝값(NTH_VALUE) 함수는 다음과 같은 구문으로 사용됩니다.
NTH_VALUE (expr, N) OVER (
[PARTITION BY partition_expression, ... ]
ORDER BY order_expression
ROWS|range BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
)
expr
: 반환하려는 열 또는 식입니다.N
: 반환할 행의 순서를 나타내는 인덱스입니다.PARTITION BY
: 데이터를 파티션화할 기준 열을 지정합니다.ORDER BY
: 데이터를 정렬할 기준 열을 지정합니다.ROWS|range BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
: 윈도우 프레임을 정의합니다.
예제
예를 들어, 아래와 같은 sales
테이블이 있다고 가정해봅시다.
| order_id | product | amount |
|----------|---------|--------|
| 1 | A | 100 |
| 2 | B | 200 |
| 3 | A | 150 |
| 4 | B | 120 |
| 5 | A | 180 |
이제 amount
열을 기준으로 정렬하고 각 제품별로 두 번째로 큰 값을 찾아보겠습니다.
SELECT
order_id,
product,
amount,
NTH_VALUE(amount, 2) OVER (PARTITION BY product ORDER BY amount DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) as nth_value_amount
FROM sales;
결과는 다음과 같습니다.
| order_id | product | amount | nth_value_amount |
|----------|---------|--------|------------------|
| 1 | A | 100 | 150 |
| 2 | B | 200 | 120 |
| 3 | A | 150 | 150 |
| 4 | B | 120 | 120 |
| 5 | A | 180 | 150 |
참고
SQL의 끝값(NTH_VALUE) 함수에 대한 자세한 내용은 다음의 공식 문서를 참조하실 수 있습니다. Oracle 끝값(NTH_VALUE) 함수 문서