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.