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

SQLite AVG


Resumo :neste tutorial, você aprenderá como usar o SQLite AVG função para calcular o valor médio de um conjunto de valores.

Introdução à função SQLite AVG


O AVG function é uma função agregada que calcula o valor médio de todos os valores não NULL dentro de um grupo.

O seguinte ilustra a sintaxe do AVG função:
AVG([ALL | DISTINCT] expression);Code language: SQL (Structured Query Language) (sql)

Por padrão, o AVG função usa ALL cláusula independentemente de você especificá-la ou não. Isso significa que a função AVG terá todos os valores não NULL quando calcular o valor médio.

Caso você queira calcular o valor médio de valores distintos (ou únicos), você precisa especificar a cláusula DISTINCT explicitamente na expressão.

Se uma coluna armazena tipos de dados mistos, como inteiro, real, BLOB e texto, SQLite AVG A função interpreta o BLOB que não se parece com um número como zero (0).

O valor do AVG função é sempre um valor de ponto flutuante ou um NULL valor. O AVG função retorna apenas um NULL valor se e somente se todos os valores no grupo são NULL valores.

Você pode fazer um teste rápido para ver como a função SQLite funciona com vários tipos de dados.

Primeiro, crie uma nova tabela chamada avg_tests usando a seguinte declaração:
CREATE TABLE avg_tests (val);Code language: SQL (Structured Query Language) (sql)

Tente

Em seguida, insira alguns valores mistos no avg_tests tabela.
INSERT INTO avg_tests (val)
VALUES
 (1),
 (2),
 (10.1),
 (20.5),
 ('8'),
 ('B'),
 (NULL),
 (x'0010'),
 (x'0011');Code language: SQL (Structured Query Language) (sql)

Tente

Em seguida, consulte os dados do avg_tests tabela.
SELECT rowid,
       val
  FROM avg_tests;Code language: SQL (Structured Query Language) (sql)

Tente

Depois disso, você pode usar o AVG função para calcular a média das primeiras quatro linhas que contêm apenas valores numéricos.
SELECT
	avg(val)
FROM
	avg_tests
WHERE
	rowid < 5;Code language: SQL (Structured Query Language) (sql)

Tente

Por fim, aplique o AVG função para todos os valores no val coluna do avg_tests tabela.
SELECT
	avg(val)
FROM
	avg_tests;Code language: SQL (Structured Query Language) (sql)

Tente

Você tem 9 linhas no avg_tests tabela. A linha 7 é NULL . Portanto, ao calcular a média, o AVG função ignora e leva 8 linhas para o cálculo.

As primeiras quatro linhas são os valores inteiros e reais:1,2, 10,1 e 20,5. A função SQLite AVG usa esses valores no cálculo.

A 5ª e a 6ª linha são do tipo texto porque inserimos como 'B' e '8'. Como 8 parece um número, o SQLite interpreta B como 0 e '8' como 8.

A 8ª e 9ª linhas são BLOB tipos que não se parecem com números, portanto, o SQLite interpreta esses valores como 0.

O AVG(cal) expressão usa a seguinte fórmula:
AVG(val) = (1 + 2 + 10.1 + 20.5 + 8 + 0 + 0 + 0 )/ 8 = 5.2Code language: SQL (Structured Query Language) (sql)

Vamos ver como o DISTINCT cláusula funciona.

Primeiro, insira uma nova linha no avg_tests já existe uma tabela com um valor.
INSERT INTO avg_tests (val)
VALUES (10.1);Code language: SQL (Structured Query Language) (sql)

Tente

Segundo, aplique o AVG função sem DISTINCT cláusula:
SELECT
	avg(val)
FROM
	avg_tests;Code language: SQL (Structured Query Language) (sql)

Tente

Terceiro, adicione o DISTINCT cláusula para o AVG função:
SELECT
	avg(DISTINCT val)
FROM
	avg_tests;Code language: SQL (Structured Query Language) (sql)

Tente

Porque os avg_tests tabela tem duas linhas com o mesmo valor 10.1, o AVG(DISTINCT) leva apenas uma linha para cálculo. Portanto, você obteve um resultado diferente.

SQLite AVG exemplos práticos de funções


Usaremos as tracks tabela no banco de dados de exemplo para a demonstração.

Para calcular a duração média de todas as faixas em milissegundos, use a seguinte instrução:
SELECT
	avg(milliseconds)
FROM
	tracks;Code language: SQL (Structured Query Language) (sql)

Tente

Função SQLite AVG com GROUP BY cláusula


Para calcular a duração média das faixas de cada álbum, você usa o AVG função com o GROUP BY cláusula.

Primeiro, o GROUP BY cláusula agrupa um conjunto de faixas por álbuns. Em seguida, o AVG A função calcula a duração média das faixas para cada álbum.

Veja a seguinte declaração.
SELECT
	albumid,
	avg(milliseconds)
FROM
	tracks
GROUP BY
	albumid;Code language: SQL (Structured Query Language) (sql)

Tente

SQLite AVG função com INNER JOIN exemplo de cláusula


Para obter o título do álbum junto com o albumid coluna, você usa a cláusula INNER JOIN na instrução acima como a seguinte consulta:
SELECT
	tracks.AlbumId,
	Title,
	round(avg(Milliseconds), 2) avg_length
FROM
	tracks
INNER JOIN albums ON albums.AlbumId = tracks.albumid
GROUP BY
	tracks.albumid;Code language: SQL (Structured Query Language) (sql)

Tente

Observe que usamos o ROUND função para arredondar o valor flutuante para 2 dígitos à direita do ponto decimal.

Função SQLite AVG com exemplo de cláusula HAVING


Você pode usar o AVG função ou o alias de sua coluna na cláusula HAVING para filtrar grupos. A declaração a seguir obtém apenas os álbuns cuja duração média está entre 100.000 e 200.000.
SELECT
	tracks.albumid,
	title,
	round(avg(milliseconds),2)  avg_leng
FROM
	tracks
INNER JOIN albums ON albums.AlbumId = tracks.albumid
GROUP BY
	tracks.albumid
HAVING
	avg_leng BETWEEN 100000 AND 200000;Code language: SQL (Structured Query Language) (sql)

Tente

Neste tutorial, mostramos como usar o SQLite AVG função para calcular os valores médios de valores não NULL em um grupo.