ÎncepețiÎncepe gratuit

Calcularea agregatelor filtrate

Dacă vrem să numărăm aparițiile unui eveniment în funcție de anumite criterii de filtrare, putem folosi funcții de agregare precum SUM(), MIN() și MAX(), împreună cu expresii CASE. De exemplu, SUM(CASE WHEN ir.IncidentTypeID = 1 THEN 1 ELSE 0 END) returnează numărul de incidente asociate cu tipul de incident 1. Dacă incluzi câte o instrucțiune SUM() pentru fiecare tip de incident, ai pivotat setul de date după ID-ul tipului de incident.

În acest scenariu, conducerea vrea să știe, pentru fiecare tip de incident, câte zile au fost „zile cu incidente majore" și câte au fost „zile cu incidente minore". O zi cu incidente majore este definită ca având mai mult de 5 apariții ale aceluiași tip de incident în aceeași zi, iar o zi cu incidente minore are între 1 și 5 apariții.

Acest exercițiu face parte din cursul

Analiza seriilor de timp în SQL Server

Vezi cursul

Instrucțiuni pentru exercițiu

  • Completează o expresie CASE care să îți permită să folosești funcția SUM() pentru a calcula numărul de zile cu incidente majore și zile cu incidente minore.
  • În expresia CASE, returnează 1 dacă criteriul de filtrare corespunzător este îndeplinit și 0 în caz contrar.
  • Asigură-te că specifici aliasul atunci când faci referire la o coloană, de exemplu ir.IncidentDate sau it.IncidentType!

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

SELECT
	it.IncidentType,
    -- Fill in the appropriate expression
	SUM(___ WHEN ir.NumberOfIncidents > 5 THEN ___ ELSE ___ ___) AS NumberOfBigIncidentDays,
    -- Number of incidents will always be at least 1, so
    -- no need to check the minimum value, just that it's
    -- less than or equal to 5
    SUM(___ WHEN ir.NumberOfIncidents <= 5 THEN ___ ELSE ___ ___) AS NumberOfSmallIncidentDays
FROM dbo.IncidentRollup ir
	INNER JOIN dbo.IncidentType it
		ON ir.IncidentTypeID = it.IncidentTypeID
WHERE
	ir.IncidentDate BETWEEN '2019-08-01' AND '2019-10-31'
GROUP BY
it.IncidentType;
Editează și rulează codul