본문 바로가기
오라클 게시판/오라클(Oracle)

[오라클 TIP] 동일 관측치에서 변수간의 순위(RANK) 구하기

by 기서무나구물 2019. 1. 8.

포스팅 목차

    [오라클 TIP] 동일 관측치에서 변수간의 순위(RANK) 구하기(pivot / unpivot / row_number 함수)

    동일 관측치 상에서 변수간의 순위를 산출 후 순위를 기준으로 새로운 변수를 생성하는 프로그램 입니다.

    개별 학생에 대한 과학,수학,영어,역사 시험에 대한 점수를 정렬 후 순위에 해당하는 과목명과 점수를 산출하는 프로그램.

    SAS에서는 배열과 CALL VNAME 함수를 사용하여 구현 가능.

     
    * SAS 참고 프로그램(동일 관측치에서 변수간의 순위(RANK) 구하기 )

     

    WITH BACK AS
    
      ( SELECT 'G1' ID, 'Sally'  StudentName, 78 Math,85 English,91 History,76 Science FROM DUAL
    
        UNION ALL
    
        SELECT 'G2' ID, 'Edward' StudentName, 87 Math,90 English,82 History,87 Science FROM DUAL
    
        UNION ALL
    
        SELECT 'G3' ID, 'BACK'   StudentName, 55 Math,95 English,45 History,85 Science FROM DUAL
    
      )
    
    --SELECT * FROM BACK;
    
    
    
    SELECT *
    
    FROM   ( SELECT ID,
    
                    StudentName, 
    
                    Course, 
    
                    Score
    
                   ,ROW_NUMBER() OVER (PARTITION BY ID ORDER BY SCORE) ROW_RANK
    
             FROM   BACK
    
             UNPIVOT
    
                     ( Score
    
                       FOR Course in (Math, English, History, Science)
    
                     )
    
           )
    
    PIVOT ( MAX(COURSE) AS COURSE,
    
            MAX(SCORE)  AS SCORE
    
            --FOR COURSE IN ('SCIENCE','MATH','ENGLISH','HISTORY')
    
            FOR ROW_RANK IN (1,2,3,4)
    
          );
    반응형

    댓글