2014년 9월 24일 수요일

한레코드(여러 컬럼의 값)에서 순위 찾기[ORACLE/SQL/HINT/오라클/교육/강의/강좌/SQL교육/오라클 PLSQL/강의/강좌/오라클교육/ORACLE초보교육/오라클실무강좌]

데이터가 다음과 같이 되었다고 할때 ... --> 홍길동 10 20 30 40 50 
다음과 같은 결과를 얻고자 합니다...    --> 홍길동 50 40 30 
(3등 까지만 표시) 


SQL>conn scott/tiger 

SQL>create table test ( 

        name varchar2(10), 

        a number, 

        b numner, 

        c number, 

        d number, 

        e number); 

SQL>create temp ( 

        name varchar2(10), 

        num number); 

  

SQL>insert into test values ('홍길동',10,20,30,40,50); 

SQL> select * from test; 

NAME                A          B          C          D          E 
---------- ---------- ---------- ---------- ---------- ---------- 
홍길동            10        20        30        40        50 

SQL>insert into temp select name, a from test; 

SQL>insert into temp select name, b from test; 

SQL>insert into temp select name, c from test; 

SQL>insert into temp select name, d from test; 

SQL>insert into temp select name, e from test; 

SQL> select * from temp; 

NAME              NUM 
---------- ---------- 
홍길동            10 
홍길동            20 
홍길동            30 
홍길동            40 
홍길동            50 

SQL>select (select name from temp where rownum = 1), 
        (select min(num) from temp t1 where 1 > (select count(num) from temp t2 where t2.num > t1.num)) first, 
        (select min(num) from temp t1 where 2 > (select count(num) from temp t2 where t2.num > t1.num)) second, 
        (select min(num) from temp t1 where 3 > (select count(num) from temp t2 where t2.num > t1.num)) third 
from dual 



[결과] 

(SELECTNAM      FIRST    SECOND      THIRD 
---------- ---------- ---------- ---------- 
홍길동            50        40        30 


물론 아래 처럼 rank를 써도 되구요... 

SQL> select 
  2        max(decode(rank,1,num)) "First", 
  3        max(decode(rank,2,num)) "Second", 
  4        max(decode(rank,3,num)) "Third" 
  5  from (select name, num, rank() over (order by num desc) rank from temp); 

    First    Second      Third 
---------- ---------- ---------- 
        50        40        30


 기업100%환급/오라클/자바/스프링/안드로이드/닷넷C#/웹퍼블리싱… 오라클자바…12-271983
 [채용예정교육]오라클자바개발잘하는신입뽑기2개월과정,교육전취…오라클자바…12-111453
53 [평일주간]100%환급6건,안드로이드,자바,C#,스프링3.2,SQL,힌트/… 오라클자바…03-151207
52 [주말주간]C#, ASP.NET마스터 오라클자바…01-311372
51 [평일,기업100%환급]SQL기초에서 Schema Object까지 오라클자바…01-311199
50 [평일야간]HTML5, CSS3,Ajax, jQuery마스터과정 오라클자바…01-311063
49 [평일주간,평일야간,주말]Spring,MyBatis,Hibernate개발자과정 오라클자바…01-191371
48 [평일주간,평일야간,주말]안드로이드개발자과정 오라클자바…01-111204
47 [평일야간,주말주간]JAVA,Network&JSP&Spring,MyBatis,Hibernate 오라클자바…01-031706
46 기업100%환급/오라클/자바/스프링/안드로이드/닷넷C#/웹퍼블리싱… 오라클자바…12-271983
45 [평일야간,주말]자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis… 오라클자바…12-191474
44 웹퍼블리싱 마스터(HTML5,CSS3,jQUERY,AJAX,JavaScript) 오라클자바…12-141436
43 [채용예정교육]오라클자바개발잘하는신입뽑기2개월과정,교육전취… 오라클자바…12-111453
42 [평일,기업100%환급]자바기초에서 JDBC, Servlet/JSP까지 오라클자바…12-091168
41 [평일야간]닷넷(C#,Network,ADO.NET,ASP.NET)마스터 오라클자바…12-011375
40 [기업100%환급]C#4.0,WinForm,ADO.NET프로그래밍(평일주간(단기)… 오라클자바…12-011532
39 [평일야간,주말]SQL기초에서실무까지(SQL기초,PLSQL,힌트,튜닝) 오라클자바…12-011031

댓글 없음:

댓글 쓰기