«HAVING» es una cláusula condicional en SQL que se utiliza después de la cláusula «GROUP BY» para filtrar los grupos de filas generados por la agrupación.
Permite aplicar condiciones a los grupos de datos resultantes después de aplicar funciones de agregación como SUM(), AVG(), COUNT(), MAX(), MIN(), etc.
La cláusula «HAVING» es similar a la cláusula «WHERE» en SQL, ya que ambas permiten especificar condiciones para filtrar los resultados de una consulta. Sin embargo, «WHERE» se utiliza para filtrar filas individuales, mientras que «HAVING» se utiliza para filtrar grupos de filas.
Supongamos que tenemos una tabla «ventas» que contiene información sobre las ventas realizadas por un vendedor en diferentes días.
La tabla tiene las siguientes columnas: «vendedor» (el nombre del vendedor), «fecha» (la fecha de la venta), y «venta» (el monto de la venta).
Obtener los vendedores cuyas ventas totales sean mayores a $10,000:
SELECT vendedor, SUM(venta) as total_ventas
FROM ventas
GROUP BY vendedor
HAVING total_ventas > 10000;
En este ejemplo, primero se agrupan las ventas por vendedor usando la cláusula «GROUP BY».
Luego se calcula la suma de las ventas para cada vendedor utilizando la función de agregación «SUM()».
Finalmente, se filtran los resultados para obtener solo los vendedores cuyas ventas totales superen los $10,000 utilizando la cláusula «HAVING».
Obtener las fechas en las que el vendedor ‘Juan’ realizó ventas por un monto mayor a $1,000:
SELECT fecha, SUM(venta) as total_ventas
FROM ventas
WHERE vendedor = 'Juan'
GROUP BY fecha
HAVING total_ventas > 1000;
En este ejemplo, se filtran las ventas realizadas por el vendedor ‘Juan’ utilizando la cláusula «WHERE». Luego se agrupan las ventas por fecha utilizando la cláusula «GROUP BY».
Se calcula la suma de las ventas para cada fecha utilizando la función de agregación «SUM()».
Finalmente, se filtran los resultados para obtener solo las fechas en las que ‘Juan’ realizó ventas por un monto mayor a $1,000 utilizando la cláusula «HAVING».