Cláusula HAVING en funciones agregadas de SQL

Cláusula HAVING en funciones agregadas de SQL

En este tutorial, analizaremos algunas formas en las que podemos usar o ejecutar la cláusula HAVING en funciones agregadas de SQL . El uso de esta cláusula en funciones agregadas de SQL puede ser de gran ayuda en el resumen de datos.

La cláusula HAVING es casi similar a la declaración WHERE y también se puede ejecutar junto con ella.

Discutiremos sus correlaciones y diferencias proporcionando ejemplos a medida que avanzamos en este tutorial.

Tabla de contenido

Declaraciones GROUP BY y WHERE en SQL

Para nuestro primer ejemplo, discutiremos cómo ejecutar la cláusula WHERE y GROUP BY usando la tabla de muestra a continuación. Tenga en cuenta que solo podemos usar la cláusula WHERE con columnas existentes y no solo en funciones agregadas.

Cláusula HAVING en funciones agregadas de SQL

Digamos que queremos obtener las ventas totales de un producto en función de su columna SaleAmount donde el valor es mayor que 2 . Para obtener el resultado, nuestro comando debe ser el siguiente:

Cláusula HAVING en funciones agregadas de SQL

Primero, seleccionamos ProductName y agregamos SaleAmount para obtener TotalSales. 

Cláusula HAVING en funciones agregadas de SQL

Luego, usamos la declaración WHERE aquí ya que estamos tratando de obtener solo los productos donde SaleAmount es mayor que 2. El comando 'GROUP BY ProductName' indica que agrupará las filas debajo de la columna ProductName en una sola.

Al ejecutar nuestro conjunto de comandos, veremos que de todos los datos en las columnas ProductName y SaleAmount , solo se muestran la bombilla y el ventilador . Eso se debe a que eran los únicos que tenían un SaleAmount superior a 2.

Cláusula HAVING en funciones agregadas de SQL

En este ejemplo, la declaración WHERE es para filtrar resultados con una columna existente, que es nuestro SaleAmount . Además, tenga en cuenta que la declaración WHERE aparece antes de GROUP BY y no se puede usar para filtrar funciones agregadas. Por otro lado, la cláusula HAVING aparece después de GROUP BY y se usa para filtrar en función de una función agregada. 

Cláusula GROUP BY y HAVING en SQL

En este ejemplo, vamos a demostrar la diferencia entre la instrucción WHERE y la cláusula HAVING . Usaremos el mismo objetivo que tenemos en el ejemplo anterior para que podamos comparar y evaluar los resultados. 

Primero mostremos los productos con sus ventas totales usando el siguiente comando. Como puede ver, nuestro primer comando sigue siendo el mismo que nuestro primer comando que ejecuta la instrucción WHERE .

Cláusula HAVING en funciones agregadas de SQL

Si vamos a ejecutar nuestros primeros dos comandos, tendremos el siguiente resultado:

Cláusula HAVING en funciones agregadas de SQL

Ahora, digamos que solo queremos mostrar productos cuya venta total sea superior a 5. No podemos usar la declaración WHERE  ya que solo se puede usar con columnas existentes. Por lo tanto, necesitamos usar la cláusula HAVING ya que filtraremos desde una función agregada. 

Cláusula HAVING en funciones agregadas de SQL

Observe cómo usamos la cláusula HAVING después de GROUP BY a diferencia de la declaración WHERE que se usa antes de GROUP BY. Esto se debe a que SQL agrupará los registros antes de evaluar la cláusula HAVING

Luego, ejecutemos esos comandos junto con HAVING SUM(SaleAmount)>5 . Después de especificar que queremos obtener solo aquellos productos cuyo precio total sea superior a 5, notaremos que en nuestra tabla de resultados actual, ya no veremos el Bolígrafo . Eso es porque su total es menos de 5

Cláusula HAVING en funciones agregadas de SQL

En resumen, cuando queremos filtrar datos de nuestra tabla en función de una columna existente, usamos la cláusula WHERE , mientras que cuando queremos filtrar datos de una función agregada, usamos la cláusula HAVING

Cláusula HAVING y WHERE en SQL Server Management Studio (SSMS)

Ahora, avanzaremos discutiendo y demostrando cómo podemos ejecutar la cláusula HAVING en SQL Server Management Studio (SSMS). También abordaremos la diferencia entre la cláusula HAVING y la cláusula WHERE proporcionando ejemplos.

A continuación se muestra nuestra muestra de datos SalesOrderHeader. Estos datos consisten en 100 filas. Para nuestro ejemplo, queremos obtener TotalSale por CustomerID donde TotalSale es mayor que 10000 . Tenga en cuenta que la venta total se basa en la suma de los valores de la columna TotalDue .

Cláusula HAVING en funciones agregadas de SQL

Primero, permítanme demostrar por qué no podemos usar la cláusula WHERE cuando queremos filtrar en una función agregada según nuestro ejemplo anterior. 

Usaremos el conjunto de comandos de muestra de la imagen a continuación. Como puede ver, técnicamente tenemos el mismo conjunto de comandos que el que tenemos en nuestro primer ejemplo.

Sin embargo, cuando hacemos clic en Ejecutar en la esquina superior izquierda, dará como resultado un error porque no podemos usar la cláusula WHERE sola cuando estamos filtrando en la función agregada.

Cláusula HAVING en funciones agregadas de SQL

Para corregir el error, necesitamos filtrar el resultado usando la cláusula HAVING en lugar de la cláusula WHERE . Nuestro nuevo conjunto de comandos debería ser similar a la imagen de abajo.

Cláusula HAVING en funciones agregadas de SQL

Ahora, podemos ver que nuestro error ha sido corregido y contiene los resultados por CustomerID con un TotalSale mayor a 10000 .

Nuevamente, la cláusula WHERE siempre se usa antes de la cláusula GROUP BY , mientras que la cláusula HAVING siempre se usa después de la cláusula GROUP BY .

Uso de la cláusula HAVING y la cláusula WHERE en SQL  

Para este ejemplo, digamos que queremos usar la cláusula WHERE y HAVING al mismo tiempo. Intentemos obtener TotalSale por CustomerID donde TotalSale es mayor que 10000 pero solo con clientes donde su TerritoryID es igual a 1

Dado que queremos filtrar los resultados con clientes que tienen 1 como TerritoryID , usaremos la cláusula WHERE. Entonces nuestro comando debería ser el mismo que el anterior. Nuevamente, hemos agregado una cláusula WHERE antes de la cláusula GROUP BY.

Cláusula HAVING en funciones agregadas de SQL

Por ahora, no podemos ver mucha diferencia entre nuestro resultado anterior y este nuevo. Sin embargo, si observa detenidamente la esquina inferior derecha, ahora solo tenemos 64 filas en comparación con la anterior con 505 filas de datos. Esto se debe a que los resultados también se filtran según su TerritoryID .

Conclusión

Para resumir, solo podemos usar la cláusula WHERE con columnas existentes. Si necesitamos filtrar con funciones agregadas, debemos usar la cláusula HAVING en su lugar.

El uso de la cláusula HAVING en funciones agregadas de SQL y la práctica de formas de ejecutar la cláusula HAVING y la cláusula WHERE juntas pueden brindar comodidad a los usuarios cuando trabajan con una gran cantidad de datos o registros. 

Espero haberle proporcionado suficiente información y comprensión sobre cómo usar la cláusula HAVING en las funciones agregadas de SQL. Si desea obtener más información sobre este tema y otro contenido relacionado, puede consultar la lista de enlaces relevantes a continuación.

Mis mejores deseos,

Hafiz


Qué es uno mismo en Python: ejemplos del mundo real

Qué es uno mismo en Python: ejemplos del mundo real

Qué es uno mismo en Python: ejemplos del mundo real

Cómo guardar y cargar un archivo RDS en R

Cómo guardar y cargar un archivo RDS en R

Aprenderá a guardar y cargar objetos desde un archivo .rds en R. Este blog también cubrirá cómo importar objetos desde R a LuckyTemplates.

Revisión de los primeros N días hábiles: una solución de lenguaje de codificación DAX

Revisión de los primeros N días hábiles: una solución de lenguaje de codificación DAX

En este tutorial del lenguaje de codificación DAX, aprenda a usar la función GENERAR y a cambiar dinámicamente el título de una medida.

Showcase Insights utilizando la técnica de elementos visuales dinámicos de subprocesos múltiples en LuckyTemplates

Showcase Insights utilizando la técnica de elementos visuales dinámicos de subprocesos múltiples en LuckyTemplates

Este tutorial cubrirá cómo usar la técnica de elementos visuales dinámicos de subprocesos múltiples para crear información a partir de visualizaciones de datos dinámicos en sus informes.

Introducción al contexto de filtro en LuckyTemplates

Introducción al contexto de filtro en LuckyTemplates

En este artículo, repasaré el contexto del filtro. El contexto del filtro es uno de los temas principales que cualquier usuario de LuckyTemplates debería conocer inicialmente.

Los mejores consejos para usar las aplicaciones en el servicio en línea de LuckyTemplates

Los mejores consejos para usar las aplicaciones en el servicio en línea de LuckyTemplates

Quiero mostrar cómo el servicio en línea de LuckyTemplates Apps puede ayudar a administrar diferentes informes e información generada a partir de varias fuentes.

Analice los cambios en el margen de beneficio a lo largo del tiempo: análisis con LuckyTemplates y DAX

Analice los cambios en el margen de beneficio a lo largo del tiempo: análisis con LuckyTemplates y DAX

Aprenda a calcular los cambios de su margen de beneficio utilizando técnicas como la bifurcación de medidas y la combinación de fórmulas DAX en LuckyTemplates.

Ideas de materialización para cachés de datos en DAX Studio

Ideas de materialización para cachés de datos en DAX Studio

Este tutorial analizará las ideas de materialización de cachés de datos y cómo afectan el rendimiento de DAX al proporcionar resultados.

Informes comerciales con LuckyTemplates

Informes comerciales con LuckyTemplates

Si todavía usa Excel hasta ahora, este es el mejor momento para comenzar a usar LuckyTemplates para sus necesidades de informes comerciales.

¿Qué es la puerta de enlace de LuckyTemplates? Todo lo que necesitas saber

¿Qué es la puerta de enlace de LuckyTemplates? Todo lo que necesitas saber

¿Qué es la puerta de enlace de LuckyTemplates? Todo lo que necesitas saber