Agregación condicional SQL
La agregación condicional responde a varias preguntas relacionadas en una consulta agrupada. En lugar de escanear una tabla una vez para detectar solicitudes exitosas y nuevamente para solicitudes fallidas, coloque la condición dentro de una expresión CASE y agregue ambos resultados. Este patrón es útil para tasas de error, tasas de conversión, tasas de reintento, tasas de aciertos de caché y cualquier resultado donde el denominador deba permanecer visible.
Cuente los resultados y proteja el denominador
SELECT
route_template,
COUNT(*) AS requests,
SUM(CASE WHEN status_code >= 500 THEN 1 ELSE 0 END) AS server_errors,
100.0 * SUM(CASE WHEN status_code >= 500 THEN 1 ELSE 0 END)
/ NULLIF(COUNT(*), 0) AS server_error_rate_pct
FROM api_request_events
WHERE timestamp_utc >= now() - INTERVAL '24 hours'
GROUP BY route_template
HAVING COUNT(*) >= 20
ORDER BY server_error_rate_pct DESC;
El total, el recuento condicional y el porcentaje cuentan diferentes partes de la historia. El total establece el tamaño de la muestra. El recuento muestra un impacto absoluto. La tarifa permite comparar rutas con diferentes volúmenes de tráfico. NULLIF protege una relación de un denominador cero, mientras que 100.0 mantiene el resultado en aritmética porcentual.
Elige la población deliberadamente
La cláusula WHERE define la población antes de agrupar. La expresión CASE define qué filas de esa población coinciden con un resultado. Esa distinción es importante: excluir fallas en WHERE hace imposible una tasa de error, e incluir controles de estado en el denominador puede hacer que el tráfico de clientes parezca más saludable de lo que es.
Utilice condiciones mutuamente excluyentes cuando cada fila deba ubicarse en un grupo de estado. Utilice condiciones independientes cuando una fila pueda satisfacer legítimamente más de una etiqueta. Compruebe siempre si se espera que la suma de los depósitos sea igual al total.
Las tarifas necesitan un contexto operativo
Un alto porcentaje de dos eventos rara vez equivale al mismo porcentaje de dos millones de eventos. Mantenga el recuento en el resultado, utilice una regla de volumen mínimo revisada y compare ventanas de tiempo completas. Los valores de estado nulo, los reintentos, las entregas duplicadas y los eventos tardíos también necesitan un tratamiento explícito.
Comience con el Receta de tasa de error API, receta de reversión de transacciones o guía de tasa de conversión probados. Para conocer otras sintaxis admitidas, consulte DataFusion SQL referencia.