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().