sql >> Databasteknik >  >> RDS >> MariaDB

COUNT() Funktion i MariaDB

I MariaDB, COUNT() aggregerad funktion returnerar en räkning av antalet icke-NULL-värden för ett uttryck i raderna som hämtas av en SELECT uttalande.

Exempeldata

Anta att vi har följande tabell:

SELECT * 
FROM Pets;

Resultat:

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

Följande exempel kommer att använda COUNT() funktion när du frågar den här tabellen.

Exempel

Så här räknar du raderna i tabellen ovan:

SELECT COUNT(*)
FROM Pets;

Resultat:

8

Detta säger oss att det finns 8 rader i tabellen. Vi vet det eftersom vi använde asterisk-jokertecknet (* ) för att ange alla rader och alla kolumner.

Räkna en specifik kolumn

Du kan också ange en kolumn som ska räknas. COUNT() funktionen räknar endast icke-NULL resultat, så om du anger en kolumn som innehåller NULL värden, kommer dessa värden inte att räknas.

Här är ett exempel för att visa vad jag menar.

SELECT COUNT(DOB)
FROM Pets;

Resultat:

6

I det här fallet, Pets Tabellen innehåller två NULL värden i DOB kolumnen (två husdjur har inte angett sitt födelsedatum) och så COUNT(DOB) returnerar 6 istället för 8 när vi använde COUNT(*) .

Orsaken COUNT(*) i föregående exempel returnerade alla rader, beror på att de två raderna gjorde har data i de andra kolumnerna.

Filtrerade resultat

COUNT() funktion räknar raderna som returneras av frågan. Så om du filtrerar resultaten blir resultatet av COUNT() kommer att återspegla det.

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

Resultat:

2

I det här fallet finns det två husdjur med namnet Fluffy. Därför skulle två rader ha returnerats av frågan och resultatet av COUNT() är 2 .

Räkna distinkta kolumner

Vi har möjlighet att lägga till DISTINCT nyckelord för att ange att bara distinkta värden returneras (så att det utesluter dubbletter):

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

Resultat:

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

I det här fallet, även om det finns åtta PetName värden, bara sju av dem är distinkta (två är dubbletter – vi har två husdjur som heter Fluffy).

HAVING Klausul

Du kan inkludera COUNT() i flera delar av en fråga. Det är inte bara begränsat till SELECT lista.

Här är ett exempel som använder COUNT() i både HAVING satsen och SELECT lista:

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

Resultat:

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

Se SQL COUNT() för nybörjare för en mer detaljerad förklaring av detta exempel, samt ett exempel på hur du använder COUNT() i en fönsterfunktion.


  1. Hur man väljer och sorterar efter kolumner som inte finns i Groupy By SQL-sats - Oracle

  2. Hur exporterar man en mysql-databas med kommandotolken?

  3. Ta bort utfyllnad när du skickar frågeresultat i ett e-postmeddelande från SQL Server (T-SQL)

  4. Massinlägg med textkvalificerare i SQL Server