테이블 내 집계 관련 파생속성이 주어지지 않았을 때 아래 SQL문은 유용하다.
SELECT CASE WHEN 컬럼1 IS NULL THEN ‘총계’ ELSE 컬럼1 END ‘컬럼명‘, ROUND(COUNT(*) “개수”, 200*COUNT(*)/SUM(COUNT(*))OVER(),2) “비율”
FROM (SELECT NVL(컬럼, ‘NULL’) 컬럼1 FROM 테이블)
GROUP BY ROLLUP(컬럼1)
ORDER BY CASE ~
tip1. 200을 곱하는 이유는 ROLLUP 때문이다.
tip2. 인라인뷰에서 NVL 처리를 해주는 것이 ROLLUP 총계 표시를 위해 바람직하다.