SQL 4 Oracle 오라클용 sql 실무

SQL4Oracle

RANK 지역순위 및 전체순위 추출, 전체 순위비유별 상대등급 추출

돌프1 2023. 3. 10. 13:56

2011-08-04 16:26:34


SQL 4 Oracle 오라클용 sql  실무
▒ RANK 지역순위 및 전체순위 추출,  전체 순위비유별 상대등급 추출

 

### RANK()              그룹의 순위을 리턴하는 오라클 함수(1등,2등,2등,4등,5등).
### DENSE_RANK()  그룹의 유니크한 순위을 리턴하는  오라클 함수(1등,2등,2등,3등,4등).
### CEIL()    숫자값을 소숫점 첫째자리에서 올림하여 정수값을 리턴하는 오라클 함수.

      주어진 인수보다 크지 않은 최대 정수   CEIL( 3.1) 결과 4,  CEIL( -3.1) 결과 -3

### FLOOR() 숫자값을 소숫점 첫째자리에서 절삭하여 정수값을 리턴하는 오라클 함수.

     주어진 인수보다 작지 않은 최소 정수    FLOOR( 3.1) 결과 3,  FLOOR( -3.1) 결과 -4

### ROUND() 숫자값을 특정 위치에서 반올림하여 리턴하는 오라클 함수.
### TRUNC() 숫자값을 특정 위치에서 절삭(버림)하여 리턴하는 오라클 함수.

 

SELECT 지역구분, 고객ID,
       sum(점수) 점수합계,
       RANK() OVER (PARTITION BY 지역구분 ORDER BY sum(점수) desc) 지역순위,
       RANK() OVER (ORDER BY sum(점수) desc) 전체순위,      
      (RANK() OVER (ORDER BY sum(점수) desc) / count(*) OVER () * 100) 전체순위비율,
      (case when CEIL(RANK() OVER (ORDER BY sum(점수) desc) / count(*) OVER () * 100) <=10
                  then '1등급'
                when CEIL(RANK() OVER (ORDER BY sum(점수) desc) / count(*) OVER () * 100) <=30
                  then '2등급'
                when CEIL(RANK() OVER (ORDER BY sum(점수) desc) / count(*) OVER () * 100) <=70
                  then '3등급'
                when CEIL(RANK() OVER (ORDER BY sum(점수) desc) / count(*) OVER () * 100) <=90
                  then '4등급'
                when CEIL(RANK() OVER (ORDER BY sum(점수) desc) / count(*) OVER () * 100) <=100
                  then '5등급'
                else ''
       end) 전체등급                               
FROM 목적_Table
WHERE 고객상태='활동중'
GROUP BY 지역구분, 고객ID

 

'SQL4Oracle' 카테고리의 다른 글

Sub Query  (0) 2023.03.10
고정길이 전문 데이터 만들기 RPAD  (0) 2023.03.10
RANK 순위 추출  (0) 2023.03.10
산술함수 CEIL() FLOOR()  (0) 2023.03.10
DB LINK(원격 DB 사용)  (0) 2023.03.10