티스토리 뷰


출처 : DBguide(hikim)님

EMP table을 이용하여, 직원들의 부서별 급여 순위를 보는 SQL 만들기....


결과.

     EMPNO ENAME             SAL     DEPTNO  RANK_DEPT
---------- ---------- ---------- ---------- ----------
      7839 KING             5000         10          1  --> 10번 부서의 1등
      7782 CLARK            2450         10          2
      7934 MILLER           1300         10          3
      7788 SCOTT            3000         20          1  --> 20번 부서의 1등
      7902 FORD             3000         20          2
      7566 JONES            2975         20          3
      7876 ADAMS            1100         20          4
      7369 SMITH             800         20          5
      7698 BLAKE            2850         30          1
      7499 ALLEN            1600         30          2
      7844 TURNER           1500         30          3
      7521 WARD             1250         30          4
      7654 MARTIN           1250         30          5
      7900 JAMES             950         30          6     


초짜.---> 생각.......중.......
중짜 ---> 음... rownum을 이용하여... grouping하여... 음.. 어렵군..
고수
-- row_number()라는 analytic function을 이용한다.
-- over () 의 ()안에 order by는 순서를 정하는 기준이 되고, partition은 구분을
-- 나타냄.. 아래의 예는 즉, sal 순서로 하는데, deptno로 나누어 순서를 정함.

select empno, ename, sal,
       row_number() over ( partition by deptno order by sal desc) as rank_dept
from emp;


'WEB TIP > Oracle' 카테고리의 다른 글

HINT 사용  (0) 2008.12.17
HINT 종류  (0) 2008.09.24
Useful Oracle PL/SQLs  (0) 2007.12.24
테이블 스페이스 & 사용자 생성  (0) 2007.12.18
날짜에 대한 해당월의 주차 구하기  (0) 2006.09.08
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
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
글 보관함