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_clause의 windowing_clause를 생략하면 RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW로 기본 설정됩니다. 이 기본 설정은 때로는 NTH_VALUE ... FROM LAST ... 에서 예상치 못한 값을 반환할 수 있습니다. 왜냐하면 창의 마지막 값은 창의 아래쪽에 있으며 고정되어 있지 않기 때문입니다. 현재 행이 변경됨에 따라 계속 변경됩니다. 예상된 결과를 얻으려면 windowing_clause를 RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING으로 지정하십시오. 또는 windowing_clause를 RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING으로 지정할 수도 있습니다.
참고:
- 이 함수의 사용에 관한 더 많은 정보는 "Oracle Database Data Warehousing Guide"를 참조하십시오.
- Oracle Database Globalization Support Guide의 부록 C는 반환 값이 문자 값인 경우에 NTH_VALUE의 결과값에 할당되는 정렬을 정의하는 정렬 파생 규칙(collation derivation rules)에 대한 정보를 제공합니다.
예제
다음 예제는 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 함수 문서
'코딩 > 오라클 함수' 카테고리의 다른 글
[오라클 레퍼런스 함수] NULLIF - 두 값이 동일하면 null 반환 (0) | 2023.08.11 |
---|---|
[오라클 레퍼런스 함수] NTILE - 순서대로 버킷 번호 할당 (지정한 버킷 수로) (0) | 2023.08.11 |
[오라클 레퍼런스 함수] NLSSORT - 정렬 키(collation key) 반환 (0) | 2023.08.10 |
[오라클 레퍼런스 함수] NLS_UPPER - 모든 문자를 대문자로 변환 (0) | 2023.08.10 |
[오라클 레퍼런스 함수] NLS_LOWER - 모든 문자를 소문자로 변환 (0) | 2023.08.10 |
댓글