Cuando se trabaja con datos numéricos en Microsoft SQL Server, a menudo es necesario calcular el valor promedio de un grupo de valores. Aquí es donde resulta útil la función AVG(). En este artículo, exploraremos la sintaxis y varios casos de uso de la función AVG() en SQL Server.
Sintaxis de la función AVG()
La sintaxis de la función AVG() es la siguiente:
AVG ([ALL| DISTINCT] expresión)
El argumento ALL considera todos los valores de la expresión para calcular el valor promedio. Esta es la opción predeterminada. Por otro lado, el argumento DISTINCT considera solo los valores distintos para calcular el promedio.
Ejemplo: Cálculo del precio promedio de venta
Consideremos una tabla llamada OrderDetails que almacena información relacionada con las ventas. Para calcular el precio promedio de venta de todos los productos, podemos usar la siguiente instrucción SQL:
SELECT AVG(Precio) AS [Precio promedio] FROM [dbo].[OrderDetails]
Esto devolverá el precio promedio de venta de todos los productos. Por ejemplo, el precio promedio de venta puede ser $1755.8214.
Uso de los argumentos ALL y DISTINCT
La función AVG() se puede utilizar con los argumentos ALL y DISTINCT. De forma predeterminada, si no se especifica ningún argumento, la función utilizará ALL. Comparemos los resultados al usar diferentes argumentos:
SELECT AVG(Precio) AS [Precio promedio] FROM [dbo].[OrderDetails] SELECT AVG(ALL Precio) AS [Precio promedio] FROM [dbo].[OrderDetails] SELECT AVG(DISTINCT Precio) AS [Precio promedio] FROM [dbo].[OrderDetails]
Las primeras dos instrucciones devolverán el mismo resultado, ya que ALL es la opción predeterminada. Sin embargo, la tercera instrucción considerará solo los valores distintos para todas las entradas duplicadas.
Uso de AVG() con GROUP BY
La función AVG() también se puede utilizar con la instrucción GROUP BY para calcular el valor promedio para cada grupo. Por ejemplo, para calcular el precio promedio por producto junto con el recuento total de productos, podemos usar la siguiente instrucción SQL:
SELECT NombreProducto, COUNT(NombreProducto) AS [Recuento de productos], AVG(Precio) AS [Precio promedio], SUM(Precio) AS [Ventas totales] FROM [dbo].[OrderDetails] GROUP BY NombreProducto
Esto devolverá el precio promedio, las ventas totales y el recuento de productos para cada producto.
Uso de AVG() con ORDER BY
La función AVG() también se puede utilizar con la instrucción ORDER BY para ordenar los resultados según el valor promedio. Por ejemplo, para ordenar los productos en orden descendente según su precio promedio, podemos usar la siguiente instrucción SQL:
SELECT NombreProducto, COUNT(NombreProducto) AS [Recuento de productos], AVG(Precio) AS [Precio promedio], SUM(Precio) AS [Ventas totales] FROM [dbo].[OrderDetails] GROUP BY NombreProducto ORDER BY [Precio promedio] DESC
Esto devolverá los productos en orden descendente según su precio promedio.
Uso de AVG() con la cláusula WHERE
La función AVG() también se puede utilizar en la cláusula WHERE para filtrar los datos de forma condicional. Por ejemplo, para obtener una lista de productos que se han vendido por debajo del precio promedio cada mes, podemos usar la siguiente instrucción SQL:
SELECT NombreProducto, Precio, MesFactura FROM [dbo].[OrderDetails] WHERE Precio < (SELECT AVG(Precio) FROM [dbo].[OrderDetails])
Esto devolverá los productos que se han vendido por debajo del precio promedio.
Uso de AVG() con la cláusula HAVING
La función AVG() también se puede utilizar con la cláusula HAVING para filtrar aún más los resultados según el valor promedio. Por ejemplo, para listar los productos cuyo precio promedio es mayor que $400 y menor que el precio promedio de todos los productos, podemos usar la siguiente instrucción SQL:
SELECT NombreProducto, COUNT(NombreProducto) AS [Recuento de productos], AVG(Precio) AS [Precio promedio], SUM(Precio) AS [Ventas totales] FROM [dbo].[OrderDetails] WHERE Precio < (SELECT AVG(Precio) FROM [dbo].[OrderDetails]) GROUP BY NombreProducto HAVING AVG(Precio) > 400
Esto devolverá los productos que cumplen las condiciones especificadas.
Manejo de valores NULL
La función AVG() en SQL Server ignora los valores NULL en el cálculo y calcula el promedio en función de los valores restantes. Por ejemplo, si hay valores NULL en la columna Precio, se ignorarán al calcular el precio promedio.
Es importante tener en cuenta que la función AVG() puede devolver NULL si todos los valores de la expresión son NULL.
Conclusión
La función AVG() en SQL Server es una herramienta poderosa para calcular el valor promedio de un grupo de valores. Se puede utilizar con varios argumentos y en combinación con otras instrucciones SQL para realizar cálculos complejos y filtrado de datos. Comprender cómo utilizar la función AVG() de manera efectiva puede mejorar en gran medida tus habilidades en SQL Server.
Gracias por leer este artículo. Esperamos que te haya resultado informativo y útil en tu viaje con SQL Server.
Última actualización del artículo: 2022-06-22