Menghitung moving average
Alih-alih melihat total berjalan dari awal waktu hingga sekarang, manajemen ingin melihat rata-rata jumlah insiden selama 7 hari terakhir—yaitu dimulai 6 hari yang lalu dan berakhir pada tanggal saat ini. Karena ini berada dalam kerangka yang ditentukan dan berubah sepanjang kueri, ini disebut moving average.
SQL Server tidak memiliki kemampuan untuk melihat rentang waktu dalam window function, jadi kita perlu berasumsi bahwa ada satu baris per hari dan menggunakan klausa ROWS.
Latihan ini merupakan bagian dari kursus
Analisis Deret Waktu di SQL Server
Instruksi latihan
- Lengkapi window function yang benar untuk melakukan moving average mulai dari 6 hari yang lalu hingga hari ini (baris saat ini).
- Lengkapi window frame, termasuk klausa
ROWS, window frame preceding, dan window frame following.
Latihan interaktif langsung praktik
Cobalah latihan ini dengan melengkapi kode contoh ini.
SELECT
ir.IncidentDate,
ir.IncidentTypeID,
ir.NumberOfIncidents,
-- Fill in the correct window function
___(ir.NumberOfIncidents) OVER (
PARTITION BY ir.IncidentTypeID
ORDER BY ir.IncidentDate
-- Fill in the three parts of the window frame
___ BETWEEN ___ AND ___
) AS MeanNumberOfIncidents
FROM dbo.IncidentRollup ir
INNER JOIN dbo.Calendar c
ON ir.IncidentDate = c.Date
WHERE
c.CalendarYear = 2019
AND c.CalendarMonth IN (7, 8)
AND ir.IncidentTypeID = 1
ORDER BY
ir.IncidentTypeID,
ir.IncidentDate;