---- rank 함수
select deptno "부서번호", ename "성명", sal "급여",
    rank() over(order by sal desc) "등수", -- 해당 column의 등수를 준다.
    dense_rank() over(order by sal desc) "서열" --  서열을 나타내 준다.
from emp;

select deptno "부서번호", ename "성명", sal "급여",
    rank() over(partition by deptno order by sal desc) "부서등수",
    -- partition by 는 해당 컬럼별 순위를 나타낸다.
      rank() over(order by sal desc) "등수" -- 해당 column의 등수를 준다.
from emp;

select deptno "부서번호", ename "이름", sal "급여",
    rank() over(partition by deptno order by sal desc) "부서등수",
    rank() over(order by sal desc) "전체등수",
    dense_rank() over(partition by job order by coalesce(sal*12+comm, sal*12, 0) desc) "직종별등수",
    dense_rank() over(order by coalesce(sal*12+comm, sal*12, 0) desc) "전체서열"
from emp
order by 1;

select deptno "부서번호", ename "성명",
    coalesce(sal*12+comm, sal*12, 0) "연봉",
    rank() over(order by coalesce(sal*12+comm, sal*12, 0) desc) "등수"
from emp;

select deptno "부서번호", ename "성명", sal "급여",
    rank() over(order by sal desc) "등수" -- 해당 column의 등수를 준다.
from emp
where rank() over(order by sal desc) <= 5; -- rank 함수는 where절에 사용이 안된다.

'Program... > Oracle' 카테고리의 다른 글

Oracle Group by 절  (0) 2009.03.14
Oracle 단일행 함수와 그룹함수의 차이점  (0) 2009.03.14
Oracle 변환형 함수  (0) 2009.03.13
Oracle 날짜형 함수  (0) 2009.03.13
Oracle 숫자형 함수 - log, sign, chr  (0) 2009.03.13
Posted by Duritz

공지사항

Yesterday
Today
Total
12-04 15:18

달력

 « |  » 2024.12
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31