Намирам за доста по-лесно да посоча точните набори, от които се нуждая, с клаузата GROUPING SET:
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),());
Подозирам, че е по-ефективен, тъй като директно указва нивата за изчисляване.
http://sqlfiddle.com/#!4/8301d/3
CUBE и ROLLUP са удобни за автоматично генериране на голям брой нива на агрегиране (напр. всяко ниво в йерархия на измерения) и може да има случай за използване на GROUPING ID, ако искате да елиминирате малък поднабор от нива от голям, генериран от CUBE набор, но GROUPING SET е точно проектиран за указване на определени нива на агрегиране.