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.