본문 바로가기

나는 엔지니어/ORACLE

etc

순위함수란? 특정 그룹에 따라 순위를 매기는 기능


Over() 옵션

1. Partition by : Over(Partition By Deptno Order By Sal Desc)

Deptno별로 정렬하고 Sal를 Desc로 정렬한후 Deptno별로 순위를 매긴다.

2. Order by

3. Nulls First

4. Nulls Last 



Rank() - 중복순위 허용


ex)

Select 

  Empno, 

  Sal,

  rank() over(Order by sal asc) as sal_rank

from emp;


ex)

Select 

  Empno, 

  Sal,

  rank() over(Order by sal desc) as sal_rank

from emp;























Select 

      Empno,

      Ename,

      Job,

      comm,

  Rank() Over(Order By Comm Desc nulls last) As Comm_Rank

from emp;



Dense_Rank - 중복순위를 허용하지 않는다.

Select 

  Empno, 

  Sal,

  dense_rank() over(order by sal desc) as sal_rank

from emp;


Select 

  Empno, 

  Sal,

  dense_rank() over(order by sal asc) as sal_rank

from emp;






ROW_NUMBER() - 조건을 만족하는 모든행의 번호를 제공

Select 

  sal,

  row_number() over(order By sal desc) as sal_Rank2

from emp;

















그룹별로 순서를 매긴다.

( 그룹핑이 아니라 그룹별로 정렬 표시한후 특정 컬럼을 베이스로 순서를 매긴다.)


Select

  Deptno,

  Ename,

  Row_Number() Over(Partition By Deptno Order By Sal Desc) Sal

From Emp;


'나는 엔지니어 > ORACLE' 카테고리의 다른 글

LOCK 과 UNLOCK에 관해서  (0) 2012.06.20
쓰레기 테이블 확인 및 지우기  (0) 2012.06.19
ubuntu oracle11g Install files  (0) 2012.06.18
트랜잭션!!  (0) 2012.06.18
롤백 / 커밋  (0) 2012.06.18