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.