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

Modifique sus resultados de Avg() en SQLite con la palabra clave DISTINCT

Si conoce el avg() función en SQLite, probablemente sepa que devuelve el promedio de todos los X que no son NULL dentro de un grupo.

Pero, ¿sabía que puede agregar el DISTINCT palabra clave para esta función?

Si agrega el DISTINCT palabra clave, avg() calculará sus resultados basándose únicamente en valores distintos. Esto es esencialmente lo mismo que eliminar valores duplicados y luego calcular el promedio de los valores restantes.

Sintaxis

Para usar el DISTINCT palabra clave, simplemente insértela como primer argumento.

Así:

avg(DISTINCT X)

Donde X es el nombre de la columna para la que está calculando el promedio.

Ejemplo

Tome la siguiente tabla llamada Products :

ProductId   ProductName    Price     
----------  -------------  ----------
1           Widget Holder  139.5     
2           Blue Widget    10.0      
3           Red Widget     10.0      
4           Green Widget   10.0      
5           Widget Stick   89.75     
6           Foo Cap        11.99     

Si ejecuto un avg() normal en la columna Precio:

SELECT avg(Price) FROM Products;

Esto es lo que obtengo:

45.2066666666667

Pero si ejecuto un DISTINCT consulta:

SELECT avg(DISTINCT Price) FROM Products;

Me sale esto:

62.81

Entonces, en este caso, cambia el resultado considerablemente.

Para que quede claro, aquí están uno al lado del otro:

SELECT 
 avg(Price) AS "Non-Distinct",
 avg(DISTINCT Price) AS "Distinct"
FROM Products;

Resultado:

Non-Distinct      Distinct  
----------------  ----------
45.2066666666667  62.81     

Como probablemente puedas imaginar, usando DISTINCT palabra clave con avg() podría sesgar enormemente los resultados, especialmente si hay muchos duplicados en un extremo del rango, pero no muchos duplicados en el otro extremo.