Inizia subitoInizia gratis

Calcolare aggregazioni filtrate

Se vuoi contare quante volte si verifica un evento dato un certo filtro, puoi sfruttare funzioni di aggregazione come SUM(), MIN() e MAX(), insieme alle espressioni CASE. Ad esempio, SUM(CASE WHEN ir.IncidentTypeID = 1 THEN 1 ELSE 0 END) restituisce il numero di incidenti associati al tipo di incidente 1. Se includi una dichiarazione SUM() per ciascun tipo di incidente, avrai effettuato un pivot dell'insieme di dati per ID tipo di incidente.

In questo scenario, la direzione vuole sapere, per tipo di incidente, quanti giorni con "big-incident" abbiamo avuto rispetto ai giorni con "small-incident". La direzione definisce un giorno con big-incident come un giorno con più di 5 occorrenze dello stesso tipo di incidente nello stesso giorno, mentre un giorno con small-incident ha tra 1 e 5 occorrenze.

Questo esercizio fa parte del corso

Analisi delle serie temporali in SQL Server

Visualizza corso

Istruzioni dell'esercizio

  • Compila un'espressione CASE che ci permetta di usare la funzione SUM() per calcolare il numero di giorni con big-incident e small-incident.
  • Nell'espressione CASE, restituisci 1 se il criterio di filtro appropriato è soddisfatto e 0 altrimenti.
  • Ricordati di specificare l'alias quando fai riferimento a una colonna, ad esempio ir.IncidentDate o it.IncidentType!

esercizio interattivo pratico

Prova questo esercizio completando questo codice di esempio.

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;
Modifica ed esegui il codice