No MariaDB, o
COUNT()
A função agregada retorna uma contagem do número de valores não NULL de uma expressão nas linhas recuperadas por um SELECT
demonstração. Dados de amostra
Suponha que temos a seguinte tabela:
SELECT *
FROM Pets;
Resultado:
+-------+-----------+---------+---------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | +-------+-----------+---------+---------+------------+ | 1 | 2 | 3 | Fluffy | 2020-11-20 | | 2 | 3 | 3 | Fetch | 2019-08-16 | | 3 | 2 | 2 | Scratch | 2018-10-01 | | 4 | 3 | 3 | Wag | 2020-03-15 | | 5 | 1 | 1 | Tweet | 2020-11-28 | | 6 | 3 | 4 | Fluffy | 2020-09-17 | | 7 | 3 | 2 | Bark | NULL | | 8 | 2 | 4 | Meow | NULL | +-------+-----------+---------+---------+------------+
Os exemplos a seguir usarão o
COUNT()
função ao consultar esta tabela. Exemplo
Veja como contar as linhas na tabela acima:
SELECT COUNT(*)
FROM Pets;
Resultado:
8
Isso nos diz que há 8 linhas na tabela. Sabemos disso porque usamos o curinga asterisco (
*
) para especificar todas as linhas e todas as colunas. Contar uma coluna específica
Você também pode especificar uma coluna para contar. O
COUNT()
função conta apenas não-NULL
resultados, portanto, se você especificar uma coluna que contém NULL
valores, esses valores não serão contados. Aqui está um exemplo para demonstrar o que quero dizer.
SELECT COUNT(DOB)
FROM Pets;
Resultado:
6
Neste caso, os
Pets
tabela contém dois NULL
valores no DOB
coluna (dois animais de estimação não forneceram a data de nascimento) e, portanto, COUNT(DOB)
retorna 6, em vez de 8 quando usamos COUNT(*)
. O motivo
COUNT(*)
no exemplo anterior retornou todas as linhas, porque essas duas linhas retornou tem dados nas outras colunas. Resultados filtrados
O
COUNT()
função conta as linhas retornadas pela consulta. Portanto, se você filtrar os resultados, o resultado de COUNT()
vai refletir isso. SELECT COUNT(*)
FROM Pets
WHERE PetName = 'Fluffy';
Resultado:
2
Neste caso, existem dois animais de estimação com o nome de Fluffy. Portanto, duas linhas teriam sido retornadas pela consulta e o resultado de
COUNT()
é 2
. Contar Colunas Distintas
Temos a opção de adicionar o
DISTINCT
palavra-chave para especificar que apenas valores distintos sejam retornados (para que exclua duplicatas):SELECT
COUNT(PetName) AS "All",
COUNT(DISTINCT PetName) AS "Distinct"
FROM Pets;
Resultado:
+-----+----------+ | All | Distinct | +-----+----------+ | 8 | 7 | +-----+----------+
Neste caso, mesmo havendo oito
PetName
valores, apenas sete deles são distintos (dois são duplicados – temos dois pets chamados Fluffy). O HAVING
Cláusula
Você pode incluir
COUNT()
em várias partes de uma consulta. Não se limita apenas ao SELECT
Lista. Aqui está um exemplo que usa
COUNT()
tanto no HAVING
cláusula e o SELECT
Lista:SELECT
PetTypeId,
COUNT(PetTypeId) AS Count
FROM Pets
GROUP BY PetTypeId
HAVING COUNT(PetTypeId) > 2
ORDER BY Count DESC;
Resultado:
+-------------+---------+ | PetTypeId | Count | |-------------+---------| | 3 | 4 | | 2 | 3 | +-------------+---------+
Veja SQL
COUNT()
para Iniciantes para uma explicação mais detalhada deste exemplo, bem como um exemplo de uso de COUNT()
em uma função de janela.