SQL

¿Cómo obtener el promedio en SQL Server con la función AVG()?

Estrada Web Group
Administrador
¿Cómo obtener el promedio en SQL Server con la función AVG()?

En este tutorial, aprenderás a usar la función AVG() de SQL Server para calcular el valor promedio de un grupo de valores.

Introducción a la función AVG() de SQL Server

La función AVG() de SQL Server es una función agregada que devuelve el valor promedio de un grupo de valores.

A continuación, se ilustra la sintaxis de la función AVG():

AVG([ALL | DISTINCT] expression)

Sintaxis:

  • ALL indica a la función AVG() que tome todos los valores para realizar el cálculo y obtener el promedio. ALL es el valor por defecto.
  • DISTINCT indica a la función AVG() que opere solo con valores únicos.
  • expression es una expresión válida que devuelve un valor numérico.

La función AVG() ignora los valores NULL.

Función AVG() de SQL Server: ALL contra DISTINCT

Las siguientes declaraciones crean una nueva tabla, insertan algunos valores en la tabla y consultan datos en ella:

CREATE TABLE t(val dec(10,2));
INSERT INTO t(val) VALUES(1),(2),(3),(4),(4),(5),(5),(6);
SELECT val FROM t;

El siguiente ejemplo usa la función AVG() calcula el promedio de todos los valores en la tabla t:

SELECT AVG(ALL val) FROM t;

Resultado:

avg_all
----------
3.750000

En este ejemplo, usamos el modificador ALL, por lo tanto, la función promedio considera los ocho valores en la columna val en el cálculo:

(1 + 2 + 3 + 4 + 4 + 5 + 5 + 6) /  8 = 3.75

La siguiente instrucción usa la función AVG() con el modificador DISTINCT:

SELECT  AVG(DISTINCT val) FROM t;

Resultado:

avg_distinct
------------
3.500000

Debido al modificador DISTINCT, la función AVG() realiza el cálculo en valores que son distintos:

(1 + 2 + 3 + 4 + 5 + 6) / 6 = 3.5

Ejemplos de la función AVG() de SQL Server

Veamos algunos ejemplos para ver cómo funciona la función AVG() en la base de datos de prueba.

A) Ejemplo simple de SQL Server AVG()

El siguiente ejemplo devuelve el precio de lista promedio de todos los productos:

SELECT AVG(list_price) FROM production.products;

En este ejemplo, la función AVG() devolvió un valor único para toda la tabla.

Aquí está el resultado:

SQL Server AVG function example

B) AVG() de SQL Server con GROUP BY

Si utiliza la función AVG() con una cláusula GROUP BY, la función AVG() devuelve un valor único para cada grupo en lugar de un valor único para toda la tabla.

El siguiente ejemplo devuelve el precio de lista promedio para cada categoría de producto:

SELECT category_name, CAST(ROUND(AVG(list_price),2) AS DEC(10,2)) avg_product_price
FROM production.products p
INNER JOIN production.categories c ON c.category_id = p.category_id
GROUP BY category_name
ORDER BY category_name;

La siguiente imagen muestra el resultado:

Ejemplo de la funcion AVG de sql server con GROUP BY

C) AVG() de SQL Server con la cláusula HAVING

Vea el siguiente ejemplo:

SELECT brand_name, CAST(ROUND(AVG(list_price),2) AS DEC(10,2))  avg_product_price
FROM production.products p
INNER JOIN production.brands c ON c.brand_id = p.brand_id
GROUP BY brand_name
HAVING AVG(list_price) > 500
ORDER BY avg_product_price;

Resultado:

SQL Server AVG function with HAVING

En este ejemplo:

  • Primero, la cláusula GROUP BY divide los productos por marcas en grupos.
  • En segundo lugar, la función AVG() calcula el precio de lista promedio para cada grupo.
  • En tercer lugar, la cláusula HAVING elimina las marcas donde cuyo precio de lista promedio es menor a 500.

En este tutorial, aprendiste a usar la función AVG() de SQL Server para calcular el valor promedio de un conjunto de valores.

Compartir artículo:

Más artículos geniales

¿Cómo unir o concatenar dos o más columnas separadas por un espacio en SQL con CONCAT_WS?

¿Cómo unir o concatenar dos o más columnas separadas por un espacio en SQL con CONCAT_WS?

En este tutorial, aprenderá a usar la función CONCAT_WS() de SQL Server para unir varias cadenas junto con un separador, esta función solo esta disponible en SQL Server 2017 en adelante.

Ver artículo completo
¿Cómo obtener el valor máximo en SQL Server con la función MAX()?

¿Cómo obtener el valor máximo en SQL Server con la función MAX()?

En este tutorial, aprenderás a usar la función MAX() de SQL Server para encontrar el valor máximo en un grupo de resultados.

Ver artículo completo
¿Cómo remplazar una cadena de caracteres por otra en SQL Server?

¿Cómo remplazar una cadena de caracteres por otra en SQL Server?

En este tutorial, aprenderás a usar la función REPLACE() de SQL Server para reemplazar todas las veces que aparezca una palabra, frase o cadena de caracteres por otra palabra o frase dentro de una cadena de caracteres.

Ver artículo completo

Manténgase actualizado

Obtenga excelente contenido en su bandeja de entrada todas las semanas.
Solo contenido excelente, no compartimos su correo electrónico con terceros.
Subir al inicio de la pantalla ;