HAVING filtra grupos en SQL
WHERE filtra filas antes de agrupar; HAVING filtra los grupos después.
SELECT
customer_id,
COUNT(*) AS orders,
SUM(total) AS lifetime_value
FROM orders
WHERE status = 'paid'
GROUP BY customer_id
HAVING COUNT(*) >= 3
AND SUM(total) > 500
ORDER BY lifetime_value DESC;
Cómo funciona
HAVINGpuede referirse a agregados;WHEREno.- Usa ambos juntos: acota las filas y luego acota los grupos.
- El orden de cláusulas es WHERE, GROUP BY, HAVING, ORDER BY.
Palabras clave y builtins usados aquí
ANDASBYCOUNTDESCFROMGROUPHAVINGORDERSELECTSUMWHERE
El intento, en números
- Líneas
- 10
- Caracteres a escribir
- 195
- Tokens
- 45
- Ritmo de tres estrellas
- 85 tpm
Al ritmo de tres estrellas de 85 tokens por minuto, este intento toma unos 32 segundos.
Paso 3 de 4 en Agrupación; paso 7 de 22 en Joins y agregación.