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

¿Qué es y para que sirve SQL Joins?

¿Qué es y para que sirve SQL Joins?

Una cláusula SQL JOIN se usa para combinar filas de dos o más tablas, en función de una columna relacionada entre ellas.

Ver artículo completo
¿Cómo insertar varios registros en un solo INSERT en SQL?

¿Cómo insertar varios registros en un solo INSERT en SQL?

En este tutorial, aprenderás cómo insertar varias filas en una tabla utilizando una sola instrucción INSERT de SQL Server. Insertar varios registros en una sentencia en SQL Server es una tarea común

Ver artículo completo
Columnas calculadas en SQL Server

Columnas calculadas en SQL Server

Resumen: en este tutorial, aprenderá a usar las columnas calculadas de SQL Server para reutilizar la lógica de cálculo en varias consultas.

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