MariaDB
 sql >> Database >  >> RDS >> MariaDB

COUNT() Funzione in MariaDB

In MariaDB, il COUNT() la funzione di aggregazione restituisce un conteggio del numero di valori non NULL di un'espressione nelle righe recuperate da un SELECT dichiarazione.

Dati di esempio

Supponiamo di avere la seguente tabella:

SELECT * 
FROM Pets;

Risultato:

+-------+-----------+---------+---------+------------+
| 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       |
+-------+-----------+---------+---------+------------+

Gli esempi seguenti utilizzeranno COUNT() funzione quando si interroga questa tabella.

Esempio

Ecco come contare le righe nella tabella sopra:

SELECT COUNT(*)
FROM Pets;

Risultato:

8

Questo ci dice che ci sono 8 righe nella tabella. Lo sappiamo perché abbiamo utilizzato il carattere jolly asterisco (* ) per specificare tutte le righe e tutte le colonne.

Conta una colonna specifica

Puoi anche specificare una colonna da contare. Il COUNT() la funzione conta solo non NULL risultati, quindi se specifichi una colonna che contiene NULL valori, quei valori non verranno conteggiati.

Ecco un esempio per dimostrare cosa intendo.

SELECT COUNT(DOB)
FROM Pets;

Risultato:

6

In questo caso, il Pets la tabella contiene due NULL valori nel DOB colonna (due animali domestici non hanno fornito la loro data di nascita), e quindi COUNT(DOB) restituisce 6, invece di 8 quando abbiamo usato COUNT(*) .

Il motivo COUNT(*) nell'esempio precedente hanno restituito tutte le righe, perché quelle due righe hanno fatto avere dati nelle altre colonne.

Risultati filtrati

Il COUNT() la funzione conta le righe restituite dalla query. Quindi, se filtri i risultati, il risultato di COUNT() lo rifletterà.

SELECT COUNT(*)
FROM Pets
WHERE PetName = 'Fluffy';

Risultato:

2

In questo caso, ci sono due animali domestici con il nome di Fluffy. Pertanto, la query avrebbe restituito due righe e il risultato di COUNT() è 2 .

Conta colonne distinte

Abbiamo la possibilità di aggiungere il DISTINCT parola chiave per specificare che vengono restituiti solo valori distinti (in modo da escludere i duplicati):

SELECT 
    COUNT(PetName) AS "All",
    COUNT(DISTINCT PetName) AS "Distinct"
FROM Pets;

Risultato:

+-----+----------+
| All | Distinct |
+-----+----------+
|   8 |        7 |
+-----+----------+

In questo caso, anche se ci sono otto PetName valori, solo sette di loro sono distinti (due sono duplicati:abbiamo due animali domestici chiamati Fluffy).

Il HAVING Clausola

Puoi includere COUNT() in più parti di una query. Non è solo limitato a SELECT elenco.

Ecco un esempio che utilizza COUNT() in entrambi i HAVING clausola e il SELECT elenco:

SELECT 
    PetTypeId, 
    COUNT(PetTypeId) AS Count
FROM Pets
GROUP BY PetTypeId
HAVING COUNT(PetTypeId) > 2
ORDER BY Count DESC;

Risultato:

+-------------+---------+
| PetTypeId   | Count   |
|-------------+---------|
| 3           | 4       |
| 2           | 3       |
+-------------+---------+

Vedi SQL COUNT() per principianti per una spiegazione più dettagliata di questo esempio, nonché un esempio di utilizzo di COUNT() in una funzione finestra.