본문 바로가기

[오라클 레퍼런스 함수] NTH_VALUE - 윈도우(window) 내 n번째 값 반환

by ㅇㅍㅍ 2023. 8. 11.
[오라클 레퍼런스 함수] NTH_VALUE - 윈도우(window) 내 n번째 값 반환
728x90

 

NTH_VALUE

 

구문

NTH_VALUE(measure_expr, n)
  [ FROM { FIRST | LAST } ][ { RESPECT | IGNORE } NULLS ] 
  OVER (analytic_clause)

 

참고:

구문, 의미, 그리고 제한 사항에 대한 정보는 "Analytic Functions"에 대한 내용을 참조하세요.

 

목적

NTH_VALUE 함수는 분석절(analytic_clause)로 정의된 창(window) 내에서 n번째 행의 measure_expr 값을 반환합니다. 반환되는 값은 measure_expr의 데이터 유형을 가집니다.

 

  • {RESPECT | IGNORE} NULLS measure_expr의 null 값이 계산에 포함되는지 여부를 결정합니다. 기본값은 RESPECT NULLS입니다.
  • n은 measure 값이 반환되는 n번째 행을 결정합니다. n은 상수, 바인드 변수, 열 또는 이들을 포함한 식일 수 있습니다. 이는 양의 정수로 해결되어야 합니다. 데이터 소스 창의 행 수가 n보다 작으면 함수는 NULL을 반환합니다. n이 null인 경우 함수는 오류를 반환합니다.
  • FROM {FIRST | LAST}는 계산이 창의 첫 번째 행 또는 마지막 행에서 시작되는지를 결정합니다. 기본값은 FROM FIRST입니다.

analytic_clausewindowing_clause를 생략하면 RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW로 기본 설정됩니다. 이 기본 설정은 때로는 NTH_VALUE ... FROM LAST ... 에서 예상치 못한 값을 반환할 수 있습니다. 왜냐하면 창의 마지막 값은 창의 아래쪽에 있으며 고정되어 있지 않기 때문입니다. 현재 행이 변경됨에 따라 계속 변경됩니다. 예상된 결과를 얻으려면 windowing_clauseRANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING으로 지정하십시오. 또는 windowing_clauseRANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING으로 지정할 수도 있습니다.

 

참고:

 

예제

다음 예제는 prod_id가 13부터 16까지 각각에 대해 두 번째 channel_id의 오름차순으로 최소 amount_sold 값을 보여줍니다:

SELECT prod_id, channel_id, MIN(amount_sold),
    NTH_VALUE(MIN(amount_sold), 2) OVER (PARTITION BY prod_id ORDER BY channel_id
    ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) nv
  FROM sales
  WHERE prod_id BETWEEN 13 and 16
  GROUP BY prod_id, channel_id;

   PROD_ID CHANNEL_ID MIN(AMOUNT_SOLD)         NV
---------- ---------- ---------------- ----------
        13          2           907.34      906.2
        13          3            906.2      906.2
        13          4           842.21      906.2
        14          2          1015.94    1036.72
        14          3          1036.72    1036.72
        14          4           935.79    1036.72
        15          2           871.19     871.19
        15          3           871.19     871.19
        15          4           871.19     871.19
        16          2           266.84     266.84
        16          3           266.84     266.84
        16          4           266.84     266.84
        16          9            11.99     266.84

13 rows selected.

 


출처: 오라클 레퍼런스

원문 링크: Oracle NTH_VALUE 함수 문서

 

반응형

댓글