MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Função COUNT() no MariaDB


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.