Jeg finder det noget lettere at specificere de nøjagtige sæt, jeg har brug for, med GROUPING SET-sætningen:
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),());
Jeg formoder, at det er mere effektivt, da det direkte specificerer de niveauer, der skal beregnes.
http://sqlfiddle.com/#!4/8301d/3
CUBE og ROLLUP er praktiske til automatisk at generere et stort antal aggregeringsniveauer (f.eks. hvert niveau i et dimensionshierarki), og der kan være et argument for at bruge GRUPPERINGS-ID, hvis du vil fjerne en lille delmængde af niveauer fra en stor CUBE-genereret sæt, men GROUPING SET er præcist designet til at specificere bestemte aggregeringsniveauer.