//순위 함수
- ROWNUM의 사용을 여러 가지 용도로 구현해놓은 함수
- where절에 사용할 수 없다. > 사용하려면 서브쿼리를 사용해야 함.
// RANK() OVER() :
- 정렬 후 ROWNUM을 붙일 수 있게 해주는 함수
- 순위 부여 시, 중복값이 발생하면 동일한 순위를 부여하고, 중복값의 개수만큼 건너뛴다.
rank() over(order by 컬럼명 [asc|desc]);
SELECT RANK() OVER (ORDER BY AGE) , ID, NAME, BIRTHDAY, PHONE, REGDATE, AGE FROM MEMBER;
select
name, buseo, basicpay,
rank() over(order by basicpay desc)
from tblInsa;
// DENSE_RANK()
- 정렬 후 ROWNUM을 붙일 수 있게 해주는 함수
- 순위 부여 시, 중복값이 발생하면 동일한 순위를 부여하고, 그 뒤의 순위는 건너뛰지 않고 순차적으로 부여한다.
SELECT DENSE_RANK() OVER (ORDER BY AGE) , ID, NAME, BIRTHDAY, PHONE, REGDATE, AGE FROM MEMBER;
SELECT DENSE_RANK() OVER (ORDER BY HIT DESC) , WRITER_ID, TITLE, CONTENT, HIT FROM NOTICE;
select
name, buseo, basicpay,
dense_rank() over(order by basicpay desc)
from tblInsa;
// ROW_NUMBER()
- 정렬 후 ROWNUM을 붙일 수 있게 해주는 함수
- 순위 부여 시, 중복값과 상관없이 순차적으로 부여한다.
- ROWNUM을 사용한 결과와 동일하다.
SELECT ROW_NUMBER() OVER (ORDER BY AGE) , ID, NAME, BIRTHDAY, PHONE, REGDATE, AGE FROM MEMBER;
select
name, buseo, basicpay,
row_number() over(order by basicpay desc)
from tblInsa;
// PARTITION()
- 정렬할 때 GROUP BY 기능을 함.
SELECT DENSE_RANK() OVER (PARTITION BY WRITER_ID ORDER BY HIT DESC)
, WRITER_ID, TITLE, CONTENT, HIT FROM NOTICE;
select
buseo, name, basicpay,
dense_rank() over(partition by buseo order by basicpay desc) as rnum
from tblInsa;
'데이터베이스(DB) > Oracle' 카테고리의 다른 글
[Oracle] 조인(JOIN) (0) | 2023.02.21 |
---|---|
[Oracle] 서브 쿼리 (0) | 2023.02.20 |
[Oracle] 집계 함수, Group by절, Having절 (0) | 2023.02.20 |
[Oracle] NULL 관련 함수, DECODE 함수 (0) | 2023.02.19 |
[Oracle] 변환 함수 (0) | 2023.02.19 |