Se você conhece o
avg()
função no SQLite, você provavelmente sabe que ela retorna a média de todos os valores não NULL X dentro de um grupo. Mas você sabia que pode adicionar o
DISTINCT
palavra-chave para esta função? Se você adicionar o
DISTINCT
palavra-chave, avg()
calculará seus resultados com base apenas em valores distintos. Isso é essencialmente o mesmo que remover valores duplicados e calcular a média dos valores restantes. Sintaxe
Para usar o
DISTINCT
palavra-chave, você simplesmente a insere como o primeiro argumento. Assim:
avg(DISTINCT X)
Onde
X
é o nome da coluna para a qual você está calculando a média. Exemplo
Pegue a seguinte tabela chamada
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
Se eu executar um
avg()
normal na coluna Preço:SELECT avg(Price) FROM Products;
Aqui está o que eu recebo:
45.2066666666667
Mas se eu executar um
DISTINCT
inquerir:SELECT avg(DISTINCT Price) FROM Products;
Eu entendi isso:
62.81
Então, neste caso, isso muda o resultado consideravelmente.
Só para ficar claro, aqui estão eles lado a lado:
SELECT
avg(Price) AS "Non-Distinct",
avg(DISTINCT Price) AS "Distinct"
FROM Products;
Resultado:
Non-Distinct Distinct ---------------- ---------- 45.2066666666667 62.81
Como você provavelmente pode imaginar, usando o
DISTINCT
palavra-chave com avg()
pode distorcer enormemente os resultados, especialmente se houver muitas duplicatas em uma extremidade do intervalo, mas poucas duplicatas na outra extremidade.