SQLite
 sql >> Base de Dados >  >> RDS >> SQLite

Como o SQLite Avg() funciona


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.