그룹 등을 이용해 여러차례의 서브쿼리를 사용해야하는 분석 및 통계 작업을 손쉽게 사용할 수 있게 된다.
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