Buat ringkasan dengan ROLLUP
Operator ROLLUP bekerja paling baik ketika atribut non-ukuran Anda bersifat hierarkis. Jika tidak, Anda dapat berakhir dengan tingkat agregasi yang aneh dan tidak masuk akal secara intuitif.
Dalam skenario ini, kita ingin mengagregasikan total jumlah insiden keamanan dalam tabel IncidentRollup. Manajemen ingin melihat data yang diagregasi berdasarkan kombinasi tahun kalender, kuartal kalender, dan bulan kalender. Selain itu, mereka juga ingin melihat baris agregat terpisah untuk tahun kalender plus kuartal kalender, serta baris agregat terpisah untuk setiap tahun kalender. Terakhir, mereka menginginkan satu baris lagi untuk total keseluruhan. Kita dapat melakukan semua ini dalam satu operasi.
Latihan ini merupakan bagian dari kursus
Analisis Deret Waktu di SQL Server
Instruksi latihan
- Lengkapi definisi
NumberOfIncidentsdengan menjumlahkan jumlah insiden di setiap rentang. - Lengkapi segmen
GROUP BY, termasuk operatorWITH ROLLUP.
Latihan interaktif langsung praktik
Cobalah latihan ini dengan melengkapi kode contoh ini.
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;