PostgreSQL 기초강의, PostgreSQL 기초강좌
93강 SQL 함수 정리 : PostgreSQL NTH_VALUE Function
SQL 함수 정리 93강 시작합니다.
이번 시간에는
▶ PostgreSQL NTH_VALUE Function
에 대해서 알아보는 시간입니다.
이번 시간에는 PostgreSQL NTH_VALUE() 함수를 사용하여 결과 집합의 n번째 행에서 값을 가져오는 방법에 대해 알아봅니다.
실제로 윈도우 함수 중에서 제가 업무에서 사용해 본 것은 ROW_NUMBER, RANK, DENSE_RANK 정도입니다.
나머지 함수는 강좌를 진행하면서 저도 처음 접해보는 것들입니다.
정리하면서 보았지만 아마도 금방 잊어버릴 것 같네요.
본 기억은 있는데 할 때 다시 찾아보면 됩니다.
PostgreSQL NTH_VALUE() 함수 소개
NTH_VALUE() 함수는 결과 집합의 정렬된 파티션에 있는 n번째 행에서 값을 반환합니다.
다음은 NTH_VALUE() 함수의 구문입니다:
NTH_VALUE(expression, offset)
OVER (
[PARTITION BY partition_expression]
[ ORDER BY sort_expression [ASC | DESC]
[frame_clause ]
)
NTH_VALUE() 함수의 구문을 자세히 살펴보자.
expression
식은 NTH_VALUE() 함수가 작동하는 대상 열 또는 식입니다.
offset
오프셋은 식이 평가되는 창의 첫 번째 행을 기준으로 행 번호를 결정하는 양의 정수(0보다 큼)입니다.
PARTITION BY
PARTITION BY 절은 결과 집합의 행을 NTH_VALUE() 함수가 적용되는 파티션으로 분할합니다.
ORDER BY
ORDER BY 절은 함수가 적용되는 각 파티션의 행을 정렬합니다.
frame clause
frame_clause는 현재 파티션의 하위 집합(또는 프레임)을 정의합니다.
PostgreSQL NTH_VALUE() 함수 예제
윈도우 함수 강좌에서 작성한 products table을 시연에 사용합니다.
1) 결과 집합 예제에서 PostgreSQL NTH_VALUE() 함수 사용
이 예에서는 NTH_VALUE() 함수를 사용하여 두 번째 비싼 제품과 함께 모든 제품을 반환합니다:
SELECT
product_id,
product_name,
price,
NTH_VALUE(product_name, 2)
OVER(
ORDER BY price DESC
RANGE BETWEEN
UNBOUNDED PRECEDING AND
UNBOUNDED FOLLOWING
)
FROM
products;
이 예에서
- ORDER BY 조항은 모든 제품을 높은 가격에서 낮은 가격으로 분류합니다.
- frame 절은 결과 집합의 시작 행에서 프레임 시작을 정의하고 끝 행에서 프레임 끝을 정의합니다.
- 정렬 및 프레이밍 후 결과 집합의 두 번째 행 product_name 열에 있는 NTH_VALUE() 함수 반환 값입니다.
2) 파티션 예제에서 PostgreSQL NTH_VALUE() 함수 사용
이 예에서는 NTH_VALUE() 함수를 사용하여 각 제품 그룹에 대해 두 번째로 비싼 제품이 있는 모든 제품을 반환합니다:
SELECT
product_id,
product_name,
price,
group_id,
NTH_VALUE(product_name, 2)
OVER(
PARTITION BY group_id
ORDER BY price DESC
RANGE BETWEEN
UNBOUNDED PRECEDING AND
UNBOUNDED FOLLOWING
)
FROM
products;
이 예에서
- PARTITION BY 절은 제품을 group_id 열의 값으로 지정된 제품 그룹(또는 파티션)으로 분할합니다.
- ORDER BY 절은 각 제품군의 제품을 높음에서 낮음으로 정렬했습니다.
- frame 절은 전체 파티션을 프레임으로 정의했습니다.
- 그리고 NTH_VALUE() 함수는 각 제품군의 2번째 행의 제품명을 반환합니다.
결과 집합의 n번째 행에서 값을 가져오려면 PostgreSQL NTH_VALUE() 함수를 사용하는 방법을 사용해야 합니다.
감사합니다.
본 강의는 PostgreSQL Tutorial을 참조합니다. https://www.postgresqltutorial.com/ |
Do it! SQL을 찾아 주셔서 감사합니다. 공감 ♥ , 댓글이 큰 힘이 됩니다. |
'IT > SQL 기초강좌 (PostgreSQL)' 카테고리의 다른 글
95강 SQL 함수 정리 : PostgreSQL Date/Time Functions (80) | 2023.02.06 |
---|---|
94강 SQL 함수 정리 : PostgreSQL Date/Time Operators (116) | 2023.02.05 |
92강 SQL 함수 정리 : PostgreSQL NTILE Function (63) | 2023.02.03 |
91강 SQL 함수 정리 : PostgreSQL LAG Function (88) | 2023.02.02 |
90강 SQL 함수 정리 : PostgreSQL LEAD Function (99) | 2023.02.01 |
댓글