[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
)

예제

예를 들어, 아래와 같은 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) 함수 문서