Saltar al contenido

SQL HAVING y WHERE: Las diferencias que necesita saber

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.

Índice

    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

    MySQL

    Oracle

    PostgreSQL

    SQL Server

    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! :)»