toggle menu

GROUP 및 통계 분석 함수

2012.09.11 14:14 Database/Oracle
그룹 등을 이용해 여러차례의 서브쿼리를 사용해야하는 분석 및 통계 작업을 손쉽게 사용할 수 있게 된다.

 

SELECT CUST_NO, -- 고객번호
       REGION_ID, -- 지역아이디
       SUM(TOT_SALES) CR_SUM, -- 지역, 고객 별로 합계가 구해진다.
       --여기까지가 일반적인 그룹함수 및 분석 함수 사용 예ㅖ
       
       -- 순위 : 동차 뒤에 비연속수 1, 1, 1, 4, 5 ...
       RANK() OVER(ORDER BY SUM(TOT_SALES) DESC NULLS LAST) RK1,
       
        -- 순위 : 동차 뒤에 연속수 1, 1, 1, 2, 3 ...
       DENSE_RANK() OVER(ORDER BY SUM(TOT_SALES) DESC NULLS LAST) RK2,
       
       -- 그냥 쭈욱 순위 나열
       ROW_NUMBER() OVER(ORDER BY SUM(TOT_SALES) DESC NULLS LAST) RK3, 
       
       -- 그룹별로 쭈욱 순위 나열
       ROW_NUMBER() OVER(PARTITION BY REGION_ID ORDER BY SUM(TOT_SALES) DESC NULLS LAST) RK4, 
       
       -- 각 지역의 갯수
       COUNT(REGION_ID) OVER(PARTITION BY REGION_ID) R_CNT, 
       
       -- 총 지역 갯수
       COUNT(*) OVER() TOTAL
       
       -- NULLS LAST 는 NULL값을 순위 뒤로!!
FROM ORDERS
GROUP BY CUST_NO, REGION_ID

Database/Oracle 관련 포스팅 더보기