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.