본문 바로가기
DataBase

[postgreSQL] FIRST_VALUE, LAST_VALUE 함수

by 바까 2021. 9. 15.
반응형
--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

댓글