반응형
--14)FIRST_VALUE, LAST_VALUE 함수
--특정 집합내에서 결과 건수의 변화 없이 해당 집합안에서 특정 컬럼의 첫번째 값 혹은 마지막 값을 구하는 함수
--FIRST_VALUE
select
A.PRODUCT_NAME, B.GROUP_NAME, A.PRICE,
FIRST_VALUE(A.PRICE) over
(partition by B.GROUP_NAME order by A.PRICE)
as LOWEST_PRICE_PER_GROUP
from PRODUCT a
inner join PRODUCT_GROUP b
on (A.GROUP_ID = B.GROUP_ID);
--GROUP_NAME 기준 PRICE가 가장 작은 값 출력
--LAST_VALUE
--LAST_VALUE 함수에는 "range between unbounded preceding and unbounded following"을 추가함
--디폴트가 "RANGE BETWEEN UNBOUNED PRECEDING AND CUREENT ROW"이기 때문에
select
A.PRODUCT_NAME, B.GROUP_NAME, A.PRICE,
LAST_VALUE(A.PRICE) over
(partition by B.GROUP_NAME order by A.PRICE
range between unbounded preceding --파티션의 첫번째 로우부터 마지막 로우까지
and unbounded following)
as LOWEST_PRICE_PER_GROUP
from PRODUCT a
inner join PRODUCT_GROUP b
on (A.GROUP_ID = B.GROUP_ID);
--GROUP_NAME 기준 PRICE가 가장 큰 값 출력
select
A.PRODUCT_NAME, B.GROUP_NAME, A.PRICE,
LAST_VALUE(A.PRICE) over
(partition by B.GROUP_NAME order by A.PRICE)
as LOWEST_PRICE_PER_GROUP
from PRODUCT a
inner join PRODUCT_GROUP b
on (A.GROUP_ID = B.GROUP_ID);
반응형
'DataBase' 카테고리의 다른 글
[SQL] WITH문 (0) | 2021.09.15 |
---|---|
[SQL] LAG, LEAD 함수 (0) | 2021.09.15 |
[postgreSQL] ROW_NUMBER, RANK, DENSE_RANK함수 (0) | 2021.09.15 |
[postgreSQL] [분석함수] AVG() (0) | 2021.09.15 |
[postgreSQL] [그룹함수] GROUPING SETS, ROLLUP, CUBE (0) | 2021.09.15 |
댓글