O SQLite
avg()
A função retorna o valor médio de todos os valores não NULL em um grupo. Ele aceita um argumento, que é o valor ou grupo de valores.
Exemplo
Pegue a seguinte tabela:
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 o
avg()
função para obter o valor médio do Preço coluna. Assim:SELECT avg(Price) FROM Products;
Resultado:
184.555
Como uma cláusula WHERE afeta o resultado
Se sua consulta usa um
WHERE
cláusula, a média será calculada após o WHERE
cláusula entrou em vigor. Em outras palavras, você pode usar um WHERE
cláusula para garantir que o avg()
A função calcula apenas as linhas nas quais você está interessado. Veja o que acontece se eu adicionar um
WHERE
cláusula para o exemplo anterior. SELECT avg(Price)
FROM Products
WHERE ProductName LIKE '%widget%';
Resultado:
206.073333333333
Arredonde o resultado
O resultado é retornado como um valor de ponto flutuante (a menos que seja NULL). Você pode usar o
round()
função para arredondar o valor conforme necessário. SELECT round(avg(Price), 2)
FROM Products
WHERE ProductName LIKE '%widget%';
Resultado:
206.07
Limitando os resultados
O
LIMIT
cláusula não afeta o cálculo do avg()
função – apenas uma linha é retornada com o avg()
funcionar de qualquer maneira. SELECT avg(Price)
FROM Products
LIMIT 1;
Resultado:
184.555
Dito isto, fornecer um limite de zero resultará em nada sendo retornado.
Strings e BLOBs
Os valores de string e BLOB que não se parecem com números são interpretados como 0.
SELECT avg(ProductName) FROM Products;
Resultado:
0.0
Argumentos NULL
Se não houver entradas não NULL, a função avg() retornará NULL.
SELECT avg(NULL);
Resultado:
(Esse resultado é NULL).
No entanto, se houver pelo menos um argumento não NULL, ele não retornará NULL.
Para demonstrar isso, aqui inserirei uma nova linha, mas deixarei o Preço coluna em 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
Portanto, a última linha não tem um preço – o Preço coluna é NULL.
Agora, quando eu uso o
avg()
função, ele ainda retorna a média de todas as linhas não NULL. SELECT avg(Price) FROM Products;
Resultado:
184.555
A palavra-chave DISTINTA
Você pode usar o
DISTINCT
palavra-chave para calcular a média apenas dos valores distintos na coluna. Isso tem o efeito de remover quaisquer valores duplicados do cálculo. Consulte Ajustar seus resultados Avg() no SQLite com a palavra-chave DISTINCT para obter um exemplo.