MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

COUNT()-Funktion in MariaDB

In MariaDB der COUNT() Die Aggregatfunktion gibt die Anzahl der Nicht-NULL-Werte eines Ausdrucks in den Zeilen zurück, die von einem SELECT abgerufen wurden Aussage.

Beispieldaten

Angenommen, wir haben die folgende Tabelle:

SELECT * 
FROM Pets;

Ergebnis:

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

In den folgenden Beispielen wird COUNT() verwendet Funktion beim Abfragen dieser Tabelle.

Beispiel

So zählen Sie die Zeilen in der obigen Tabelle:

SELECT COUNT(*)
FROM Pets;

Ergebnis:

8

Dies sagt uns, dass es 8 Zeilen in der Tabelle gibt. Wir wissen das, weil wir den Sternchen-Platzhalter (* ), um alle Zeilen und alle Spalten anzugeben.

Zählen Sie eine bestimmte Spalte

Sie können auch eine zu zählende Spalte angeben. Der COUNT() Funktion zählt nur Nicht-NULL Ergebnisse, also wenn Sie eine Spalte angeben, die NULL enthält Werte, diese Werte werden nicht gezählt.

Hier ist ein Beispiel, um zu demonstrieren, was ich meine.

SELECT COUNT(DOB)
FROM Pets;

Ergebnis:

6

In diesem Fall die Pets Tabelle enthält zwei NULL Werte im DOB Spalte (zwei Haustiere haben ihr Geburtsdatum nicht angegeben), also COUNT(DOB) gibt 6 statt 8 zurück, wenn wir COUNT(*) verwendet haben .

Der Grund COUNT(*) im vorherigen Beispiel alle Zeilen zurückgegeben hat, liegt daran, dass diese beiden Zeilen taten haben Daten in den anderen Spalten.

Gefilterte Ergebnisse

Der COUNT() Funktion zählt die von der Abfrage zurückgegebenen Zeilen. Wenn Sie also die Ergebnisse filtern, das Ergebnis von COUNT() wird das widerspiegeln.

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

Ergebnis:

2

In diesem Fall gibt es zwei Haustiere mit dem Namen Fluffy. Daher wären zwei Zeilen von der Abfrage zurückgegeben worden, und das Ergebnis von COUNT() ist 2 .

Unterscheidbare Spalten zählen

Wir haben die Möglichkeit, den DISTINCT hinzuzufügen Schlüsselwort, um anzugeben, dass nur unterschiedliche Werte zurückgegeben werden (so dass Duplikate ausgeschlossen werden):

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

Ergebnis:

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

In diesem Fall, obwohl es acht PetName gibt Werte, nur sieben davon sind unterschiedlich (zwei sind Duplikate – wir haben zwei Haustiere namens Fluffy).

Das HAVING Klausel

Sie können COUNT() einschließen in mehreren Teilen einer Abfrage. Es ist nicht nur auf SELECT beschränkt Liste.

Hier ist ein Beispiel, das COUNT() verwendet sowohl im HAVING -Klausel und die SELECT Liste:

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

Ergebnis:

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

Siehe SQL COUNT() für Anfänger für eine ausführlichere Erläuterung dieses Beispiels sowie ein Beispiel für die Verwendung von COUNT() in einer Fensterfunktion.