WITH test AS ( SELECT '40' code, 30 cnt FROM dual UNION ALL SELECT '30', 50 FROM dual UNION ALL SELECT '10', 20 FROM dual ) SELECT code , SUM(cnt) cnt , RATIO_TO_REPORT(SUM(cnt)) OVER(PARTITION BY GROUPING(code)) * 100 ratio FROM test GROUP BY ROLLUP(code) ;