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

Como SQLite Count() funciona


O SQLite count() A função pode ser usada para retornar o número de linhas em um conjunto de resultados.

Também pode ser usado para retornar o número de vezes que uma determinada coluna não é NULL no conjunto de resultados.

Pode ser usado de duas maneiras. Se você passar o asterisco (* ) caractere curinga, ele retornará o número total de linhas no grupo. Se você fornecer o nome de uma coluna, ele retornará o número de vezes que a coluna não é NULL.

Sintaxe


A sintaxe fica assim:
count(X)
count(*)

Então, neste caso, X pode ser o nome de uma coluna e o asterisco (* ) é usado para especificar o número total de linhas no grupo.

Exemplo:contagem(*)


Aqui está um exemplo básico para demonstrar a sintaxe do asterisco (*) para retornar o número de linhas em uma tabela.
SELECT count(*) FROM Customer;

Resultado:
59

Executei esta consulta no banco de dados de amostra Chinook e, portanto, há 59 linhas no Cliente tabela.

Exemplo:contagem(X)


Neste exemplo, passo o nome de uma coluna específica da tabela.
SELECT count(Fax) FROM Customer;

Resultado:
12

Nesse caso, o Fax coluna tem 12 valores não NULL.

Em outras palavras, 47 linhas contêm um valor NULL no Fax coluna.

Usando uma cláusula WHERE


O resultado de count() é calculado após qualquer WHERE cláusulas.
SELECT count(Fax) 
FROM Customer 
WHERE CustomerId <= 5;

Resultado:
2

Nesse caso, havia apenas dois valores não NULL no Fax coluna dentro do conjunto de resultados.

Veja como são os resultados com as colunas retornadas (e sem usar o count() função).
SELECT CustomerId, Fax 
FROM Customer 
WHERE CustomerId <= 5;

Resultado:
CustomerId  Fax               
----------  ------------------
1           +55 (12) 3923-5566
2                             
3                             
4                             
5           +420 2 4172 5555  

Assim, podemos ver que apenas as linhas 1 e 5 têm valores não NULL no Fax coluna.

Usando uma cláusula LIMIT


O resultado não é calculado após qualquer LIMIT cláusula.
SELECT count(Fax) 
FROM Customer 
LIMIT 5;

Resultado:
12

Mas você pode fazer algo assim em vez disso:
SELECT count(Fax) 
FROM (SELECT Fax FROM Customer 
LIMIT 5);

Resultado:
2

Resultados agrupados


Um caso de uso prático para count() é usá-lo em conjunto com o GROUP BY cláusula, para que várias linhas sejam retornadas - cada uma representando um grupo - com uma contagem das linhas desse grupo.

Aqui está um exemplo.
SELECT 
  ar.Name, 
  count(al.Title)
FROM Album al
INNER JOIN Artist ar
ON ar.ArtistId = al.ArtistId
WHERE ar.Name LIKE 'D%'
GROUP BY ar.Name
LIMIT 10;

Resultado:
Name             count(al.Title)
---------------  ---------------
David Coverdale  1              
Deep Purple      11             
Def Leppard      1              
Dennis Chambers  1              
Djavan           2              
Dread Zeppelin   1              

A palavra-chave DISTINTA


Você pode adicionar o DISTINCT palavra-chave para contar apenas valores distintos. Em outras palavras, você pode remover valores duplicados no cálculo.

Para obter exemplos disso, consulte Como remover duplicatas dos resultados do SQLite Count().