Cuando estamos trabajando con SQL, a menudo nos encontramos con la necesidad de usar el operador having. Sin embargo, muchas personas no saben realmente qué es el having ni cuándo usarlo. Hoy vamos a ver las diferencias entre having y where en SQL, para que usted pueda utilizarlos de la mejor manera posible.
Dentro de los temas mas complicados de entender en sql esta la clausula group by y mas cuando la combinamos con las clausualas where y having dos clausulas que permite filtrar registros . En esta entrada vamos a tratar de entenderlas con un ejemplo.
Having vs Where
En muchos casos having y where se pueden usar de forma interchangeable, pero hay unas cuantas diferencias importantes entre ellos. En general, podemos decir que having se utiliza para filtrar los resultados de una agrupación, mientras que where se utiliza para filtrar los registros antes de que sean agrupados.
Veamos un ejemplo: supongamos que tenemos una tabla de ventas con los campos fecha, vendedor y importe. Queremos saber el total de ventas por vendedor, pero solo nos interesan los vendedores que hayan realizado más de $ 1000 en ventas. En este caso, podemos usar having para filtrar los resultados:
«`
select
vendor,
sum(amount) as total_sales
from
sales
group by
vendor having sum(amount) > 1000;
«`
En este ejemplo, primero agrupamos los datos por vendedor y luego filtramos los resultados usando having para que solo nos muestre los vendedores que hayan realizado más de $ 1000 en ventas.
También podríamos haber usado where para filtrar los resultados:
«`
select
vendor,
sum(amount) as total_sales
from
sales
where
sum(amount) > 1000
group by
vendor;«`
En este caso, primero filtramos los registros usando where y luego agrupamos los datos por vendedor. Como puede ver, el resultado es el mismo, pero la forma en que se llega a él es un poco diferente.
Es importante resaltar que con el where de sql puedes filtrar por fechas o convertir las fechas al formato que necesitas. Esto no es recomandable con el having pues te limita al uso de una funcion como min o max para hacer esto..
Otra diferencia importante entre ambas es el orden en el que se ejecutan las operaciones. having siempre se ejecuta después de agrupar los datos, mientras que where se ejecuta antes. Esto significa que having puede hacer referencia a las columnas agrupadas, mientras que where no puede.
Ya en esta pagina hemos abordado de forma individual cada uno de estos comando por lo cual recomendamos ver estos articulos having y where con ejemplos practicos de cada uno de estos.
Estos comando son genericos en su uso para la mayoria de los SGBD como son
y demas
En conclusion para los fines de laborales es impresidible dominar estas herramientas y esperamos que este articulo haya aclarado cuales son las principales diferencias entre having vs where.
Pon aprueba tu conocimiento
[HDquiz quiz = «361»]
Hasta la proxima! :)»