Vytvoření souhrnu pomocí ROLLUP
Operátor ROLLUP funguje nejlépe tehdy, když jsou tvoje nemetrické atributy hierarchické. Jinak můžeš skončit s agregačními úrovněmi, které nedávají intuitivní smysl.
V tomto scénáři chceme agregovat celkový počet bezpečnostních incidentů z tabulky IncidentRollup. Vedení chce vidět data agregovaná podle kombinace kalendářního roku, kalendářního čtvrtletí a kalendářního měsíce. Kromě toho chce mít samostatné souhrnné řádky pro každý kalendářní rok spolu s příslušným čtvrtletím a také samostatné řádky pro každý kalendářní rok. A nakonec jeden řádek pro celkový součet. To vše zvládneme v jediné operaci.
Toto cvičení je součástí kurzu
Time Series Analysis in SQL Server
Pokyny k cvičení
- Dokonči definici
NumberOfIncidentstak, že sečteš počet incidentů v každém rozsahu. - Doplň sekci
GROUP BYvčetně operátoruWITH ROLLUP.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
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;