मुझे ग्रुपिंग सेट क्लॉज के साथ सटीक सेट निर्दिष्ट करना आसान लगता है:
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 बड़ी संख्या में एकत्रीकरण स्तरों को स्वचालित रूप से उत्पन्न करने के लिए आसान हैं (उदाहरण के लिए एक आयामी पदानुक्रम में प्रत्येक स्तर), और यदि आप एक बड़े CUBE-जनित स्तरों के एक छोटे उपसमुच्चय को समाप्त करना चाहते हैं तो GROUPING ID का उपयोग करने का मामला हो सकता है। सेट, लेकिन GROUPING SET को विशिष्ट एकत्रीकरण स्तरों को निर्दिष्ट करने के लिए सटीक रूप से डिज़ाइन किया गया है।