Saya merasa lebih mudah untuk menentukan set yang tepat yang saya butuhkan dengan klausa SET GROUPING:
WITH data(val1, val2, val3) AS
( SELECT 'a' ,'a-details' ,'1' FROM DUAL
UNION ALL
SELECT 'b' ,'b-details' ,'2' FROM DUAL
UNION ALL
SELECT 'c' ,'c-details' ,'3' FROM DUAL
)
SELECT NVL(val1,'Total Result'),
val2,
SUM(val3) tot
from data
group by grouping sets ((val1, val2),());
Saya menduga ini lebih efisien, karena secara langsung menentukan level yang akan dihitung.
http://sqlfiddle.com/#!4/8301d/3
CUBE dan ROLLUP berguna untuk menghasilkan sejumlah besar level agregasi secara otomatis (mis. setiap level dalam hierarki dimensi), dan mungkin ada kasus untuk menggunakan ID GROUPING jika Anda ingin menghilangkan sebagian kecil level dari CUBE besar yang dihasilkan ditetapkan, tetapi SET PENGELOMPOKAN dirancang secara tepat untuk menentukan tingkat agregasi tertentu.