Saltar al contenido principal
Básico
10 min de lectura

HAVING

Filtra grupos después de GROUP BY

HAVING es similar a WHERE, pero se usa para filtrar grupos creados por GROUP BY.

Diferencia clave

  • WHERE: Filtra filas ANTES de la agrupación
  • HAVING: Filtra grupos DESPUÉS de la agrupación
  • Sintaxis

    sql
    1SELECT columna, función_agregada(columna)2FROM tabla3GROUP BY columna4HAVING condición_agregada;

    Ejemplos

    sql
    1-- Ciudades con más de 10 usuarios2SELECT ciudad, COUNT(*) as total3FROM usuarios4GROUP BY ciudad5HAVING COUNT(*) > 10;6 7-- Categorías con precio promedio mayor a 508SELECT categoria, AVG(precio) as promedio9FROM productos10GROUP BY categoria11HAVING AVG(precio) > 50;12 13-- Productos con más de 100 ventas14SELECT producto_id, SUM(cantidad) as total15FROM ventas16GROUP BY producto_id17HAVING SUM(cantidad) > 100;

    Sintaxis

    Sintaxis
    sql
    1SELECT columna, función_agregada(...)2FROM tabla3GROUP BY columna4HAVING condición;

    Ejemplos

    Filtrar grupos

    Categorías con más de 3 productos

    Ejemplo
    sql
    1SELECT categoria, COUNT(*) as total_productos2FROM productos3GROUP BY categoria4HAVING COUNT(*) > 35ORDER BY total_productos DESC;

    Resultado:

    | categoria | total_productos |
    |-----------|----------------|
    | Electrónicos | 12          |
    | Ropa       | 8              |
    | Hogar      | 5              |