본문 바로가기
DataBase

[postgreSQL] ROW_NUMBER, RANK, DENSE_RANK함수

by 바까 2021. 9. 15.
반응형
--13)ROW_NUMBER, RANK, DENSE_RANK함수
--특정 집합 내에서 결과 건수의 변화 없이 해당 집합안에서 특정 컬럼의 순위를 구하는 함수

--ROW_NUMBER 함수 - 무조건 1,2,3,4,5...
--같은 순위가 있어도 무조건 순차적으로 순위를 매긴다.(1,2,3,4,5..순으로)
select A.PRODUCT_NAME, B.GROUP_NAME, A.PRICE,
		ROW_NUMBER() over (partition by B.GROUP_NAME order by A.PRICE DESC)
from PRODUCT a 
inner join PRODUCT_GROUP b 
		on (A.GROUP_ID = B.group_ID);
		
	
--RANK 함수 - 같은 순위면 같은 순위면서 다음 순위 건너뜀 1,1,3,4...
select A.PRODUCT_NAME, B.GROUP_NAME, A.PRICE,
		RANK() over (partition by B.GROUP_NAME order by A.PRICE)
from PRODUCT a 
inner join PRODUCT_GROUP b 
		on (A.GROUP_ID = B.group_ID);
		
--DENSE_RANK 함수 - 같은 순위면 같은 순위면서 다음 순위 건너뛰지 않음 1,1,2,3...
select A.PRODUCT_NAME, B.GROUP_NAME, A.PRICE,
		DENSE_RANK() over (partition by B.GROUP_NAME order by A.PRICE)
from PRODUCT a 
inner join PRODUCT_GROUP b 
		on (A.GROUP_ID = B.group_ID);
반응형

댓글