EmpezarEmpieza gratis

Calcular agregaciones filtradas

Si queremos contar el número de ocurrencias de un evento dado algún criterio de filtro, podemos aprovechar funciones de agregación como SUM(), MIN() y MAX(), así como expresiones CASE. Por ejemplo, SUM(CASE WHEN ir.IncidentTypeID = 1 THEN 1 ELSE 0 END) devolverá el recuento de incidentes asociados al tipo de incidente 1. Si incluyes una sentencia SUM() para cada tipo de incidente, habrás pivotado el conjunto de datos por el ID de tipo de incidente.

En este escenario, dirección quiere que le indiquemos, por tipo de incidente, cuántos días de "incidentes grandes" hemos tenido frente a días de "incidentes pequeños". Dirección define un día de incidentes grandes como aquel con más de 5 ocurrencias del mismo tipo de incidente en el mismo día, y un día de incidentes pequeños como aquel con entre 1 y 5.

Este ejercicio forma parte del curso

Análisis de series temporales en SQL Server

Ver curso

Instrucciones del ejercicio

  • Completa una expresión CASE que nos permita usar la función SUM() para calcular el número de días con incidentes grandes y con incidentes pequeños.
  • En la expresión CASE, debes devolver 1 si se cumple el criterio de filtro correspondiente y 0 en caso contrario.
  • ¡Asegúrate de especificar el alias al referenciar una columna, como ir.IncidentDate o it.IncidentType!

ejercicio interactivo práctico

Prueba este ejercicio completando este código de ejemplo.

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;
Editar y ejecutar código