ROLLUP के साथ एक सारांश बनाएँ
ROLLUP ऑपरेटर तब सबसे बेहतर काम करता है जब आपके non-measure attributes पदानुक्रमित (hierarchical) हों. अन्यथा, आप ऐसे अजीब एग्रीगेशन लेवल्स पर पहुँच सकते हैं जिनका सहज अर्थ नहीं निकलता.
इस परिदृश्य में, हम IncidentRollup टेबल में सुरक्षा घटनाओं (security incidents) की कुल संख्या को एग्रीगेट करना चाहते हैं. प्रबंधन यह डेटा कैलेंडर वर्ष, कैलेंडर तिमाही, और कैलेंडर माह के संयोजन के अनुसार एग्रीगेटेड देखना चाहता है. इसके अलावा, वे कैलेंडर वर्ष + कैलेंडर तिमाही के लिए अलग-अलग एग्रीगेट लाइन्स, साथ ही प्रत्येक कैलेंडर वर्ष के लिए अलग-अलग एग्रीगेट लाइन्स भी देखना चाहते हैं. अंत में, वे ग्रैंड टोटल के लिए एक और लाइन चाहते हैं. हम यह सब एक ही ऑपरेशन में कर सकते हैं.
यह अभ्यास पाठ्यक्रम का हिस्सा है
SQL Server में Time Series Analysis
अभ्यास निर्देश
NumberOfIncidentsकी परिभाषा पूरी करें, प्रत्येक रेंज में घटनाओं की संख्या को जोड़कर.GROUP BYसेगमेंट भरें, जिसमेंWITH ROLLUPऑपरेटर शामिल हो.
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
SELECT
c.CalendarYear,
c.CalendarQuarterName,
c.CalendarMonth,
-- Include the sum of incidents by day over each range
___(ir.___) AS NumberOfIncidents
FROM dbo.IncidentRollup ir
INNER JOIN dbo.Calendar c
ON ir.IncidentDate = c.Date
WHERE
ir.IncidentTypeID = 2
GROUP BY
-- GROUP BY needs to include all non-aggregated columns
c.___,
c.___,
c.___
-- Fill in your grouping operator
WITH ___
ORDER BY
c.CalendarYear,
c.CalendarQuarterName,
c.CalendarMonth;