En MariaDB, el AVG()
La función devuelve el valor promedio de la expresión dada.
El DISTINCT
La opción se puede usar para devolver el promedio de los distintos valores (es decir, eliminar los duplicados antes de calcular el promedio).
NULL
los valores se ignoran.
Datos de muestra
Supongamos que tenemos una tabla con los siguientes datos:
SELECT
VendorId,
ProductName,
ProductPrice
FROM Products;
Resultado:
+----------+---------------------------------+--------------+ | VendorId | ProductName | ProductPrice | +----------+---------------------------------+--------------+ | 1001 | Left handed screwdriver | 25.99 | | 1001 | Right handed screwdriver | 25.99 | | 1001 | Long Weight (blue) | 14.75 | | 1001 | Long Weight (green) | 11.99 | | 1002 | Sledge Hammer | 33.49 | | 1003 | Chainsaw | 245.00 | | 1003 | Straw Dog Box | 55.99 | | 1004 | Bottomless Coffee Mugs (4 Pack) | 9.99 | +----------+---------------------------------+--------------+
Ejemplo
Podemos usar la siguiente consulta para obtener el promedio de todos los precios.
SELECT AVG(ProductPrice)
FROM Products;
Resultado:
52.898750
En este caso, la información de precios se almacena en el ProductPrice
columna, por lo que lo pasamos como argumento a AVG()
función, que luego calculó el promedio y devolvió el resultado.
Resultados filtrados
El AVG()
opera en las filas devueltas por la consulta. Entonces, si filtra los resultados, el resultado de AVG()
reflejará eso.
SELECT AVG(ProductPrice)
FROM Products
WHERE VendorId = 1001;
Resultado:
19.680000
En este caso, 19,680000 es el precio medio de todos los productos ofrecidos por el proveedor especificado.
El DISTINCT
Palabra clave
Puedes usar el DISTINCT
palabra clave con AVG()
para calcular sólo valores distintos. Es decir, si hay valores duplicados, se tratan como un solo valor.
Ejemplo:
SELECT
AVG(ProductPrice) AS "All",
AVG(DISTINCT ProductPrice) AS "Distinct"
FROM Products;
Resultado:
+-----------+-----------+ | All | Distinct | +-----------+-----------+ | 52.898750 | 56.742857 | +-----------+-----------+
En este caso, dos artículos comparten el mismo precio (el destornillador para zurdos y el destornillador para diestros tienen un precio de 25,99). Por lo tanto, el AVG()
función, cuando se usa con DISTINCT
palabra clave, trata ambos valores como uno solo y calcula su resultado en consecuencia.
Funciones de ventana
El AVG()
La función se puede utilizar en funciones de ventana. Ver SQL AVG()
para principiantes para ver un ejemplo de esto.