sql >> Base de Datos >  >> RDS >> SQLite

Cómo funciona SQLite Avg()

El avg() de SQLite La función devuelve el valor promedio de todos los valores no NULL dentro de un grupo.

Acepta un argumento, que es el valor o grupo de valores.

Ejemplo

Tome la siguiente tabla:

ProductId   ProductName            Price     
----------  ---------------------  ----------
1           Blue Widgets (6 Pack)  389.45    
2           Widget Holder          139.5     
3           Widget Opener          89.27     
4           Foobar Set             120.0     

Podemos usar el avg() función para obtener el valor promedio del Precio columna. Así:

SELECT avg(Price) FROM Products;

Resultado:

184.555

Cómo una cláusula WHERE afecta el resultado

Si su consulta usa un WHERE cláusula, el promedio se calculará después del WHERE la cláusula ha entrado en vigor. En otras palabras, puede usar un WHERE cláusula para garantizar que avg() función calcula solo las filas que le interesan.

Esto es lo que sucede si agrego un WHERE cláusula al ejemplo anterior.

SELECT avg(Price) 
FROM Products
WHERE ProductName LIKE '%widget%';

Resultado:

206.073333333333

Redondear el resultado

El resultado se devuelve como un valor de punto flotante (a menos que sea NULL). Puedes usar round() función para redondear el valor según sea necesario.

SELECT round(avg(Price), 2)
FROM Products
WHERE ProductName LIKE '%widget%';

Resultado:

206.07

Limitar los resultados

El LIMIT la cláusula no afecta el cálculo del avg() función:solo se devuelve una fila con avg() funcionar de todos modos.

SELECT avg(Price) 
FROM Products
LIMIT 1;

Resultado:

184.555

Dicho esto, proporcionar un límite de cero dará como resultado que no se devuelva nada.

Cadenas y BLOB

Los valores de cadena y BLOB que no parecen números se interpretan como 0.

SELECT avg(ProductName) FROM Products;

Resultado:

0.0

Argumentos NULL

Si no hay entradas que no sean NULL, la función avg() devuelve NULL.

SELECT avg(NULL);

Resultado:

 

(Ese resultado es NULL).

Sin embargo, si hay al menos un argumento que no sea NULL, entonces no devolverá NULL.

Para demostrar esto, aquí insertaré una nueva fila, pero dejaré el Precio columna en NULL:

INSERT INTO Products (ProductId, ProductName) 
VALUES (5, 'Red Widget');
SELECT * FROM Products;

Resultado:

ProductId   ProductName            Price     
----------  ---------------------  ----------
1           Blue Widgets (6 Pack)  389.45    
2           Widget Holder          139.5     
3           Widget Opener          89.27     
4           Foobar Set             120.0     
5           Red Widget                       

Entonces, la última fila no tiene un precio:el Precio la columna es NULL.

Ahora, cuando uso el avg() función, aún devuelve el promedio de todas las filas no NULL.

SELECT avg(Price) FROM Products;

Resultado:

184.555

La palabra clave DISTINTA

Puedes usar el DISTINCT palabra clave para calcular el promedio de solo los valores distintos en la columna. Esto tiene el efecto de eliminar cualquier valor duplicado del cálculo.

Consulte Modificar los resultados de Avg() en SQLite con la palabra clave DISTINCT para ver un ejemplo.