Die Microsoft Excel Funktion countif zählt die Zellen, die eine Bedingung erfüllen:
Excel: =COUNTIF(<source>, <condition>)
Das gleiche Verhalten kann in SQL durch die Verwendung eines case Ausdrucks innerhalb der count Funktion erreicht werden:
SQL: COUNT(CASE WHEN <condition> THEN 1 END)
In Excel definiert die <Quelle> beliebige Zellen – in den folgenden Beispielen Ax:Ay. In SQL ist die Auswahl der Zeilen von der Auswahl der Spalten getrennt. Die Klauseln group by und over geben die Zeilen an. Die Spalte wird explizit in der <condition> verwendet, die in den case-Ausdruck eingefügt wird.
Excel: =COUNTIF(Ax:Ay, 42) SQL: COUNT(CASE WHEN A = 42 THEN 1 END)
Die Bedingung wird nicht in Anführungszeichen gesetzt – auch nicht, wenn ein Vergleichsoperator verwendet wird:
Excel: =COUNTIF(Ax:Ay, "> 42") SQL: COUNT(CASE WHEN A > 42 THEN 1 END)
Textwerte müssen jedoch in einfache Anführungszeichen gesetzt werden0:
Excel: =COUNTIF(Ax:Ay, "Marvin") SQL: COUNT(CASE WHEN A = 'Marvin' THEN 1 END)
Ob SQL-Textvergleiche Groß- und Kleinschreibung ignorieren, hängt von der sogenannten Kollation ab. Selbst die Standardeinstellung variiert zwischen den einzelnen Datenbankprodukten: MySQL, MariaDB und SQL Server führen standardmäßig Vergleiche ohne Berücksichtigung der Groß- und Kleinschreibung durch. PostgreSQL, die Oracle-Datenbank und SQLite berücksichtigen – standardmäßig – Groß- und Kleinschreibung.
Im Gegensatz zur Excel-Funktion countif wendet SQL beim Vergleich von Zeichenfolgen mit dem Gleichheitszeichen (=) keine Platzhalter an. Um Platzhalter in SQL zu verwenden, müssen Sie den Operator like verwenden. Der Operator like verwendet den Unterstrich (_) als Platzhalter für ein einzelnes Zeichen und das Prozentzeichen (%) als Platzhalter für eine beliebige Anzahl von Zeichen wie ? und * in Excels countif.
Excel: =COUNTIF(Ax:Ay, "Marvin*") SQL: COUNT(CASE WHEN A LIKE 'Marvin%' THEN 1 END)
Countif über mehrere Spalten erfolgt als Summe einer count Funktion pro Spalte:
Excel: =COUNTIF(Ax:Cy, 42) SQL: COUNT(CASE WHEN A = 42 THEN 1 END) + COUNT(CASE WHEN B = 42 THEN 1 END) + COUNT(CASE WHEN C = 42 THEN 1 END)
Die Funktion Countifs kann oft mit einer and Bedingung im case Ausdruck implementiert werden.
Excel: =COUNTIFS(Ax:Ay, 42, Bx:By, 43) SQL: COUNT(CASE WHEN A = 42 AND B = 43 THEN 1 END)
Die Funktion counta kann ebenfalls mit einem case Ausdruck implementiert werden. Dabei unterscheidet SQL zwischen leeren Strings und dem null-Wert. Der folgende Ausdruck zählt die Zeilen, die weder den Wert null noch die leere Zeichenkette haben.
SQL: COUNT(CASE WHEN A IS NOT NULL AND A != '' THEN 1 END)
Beachten Sie, dass der SQL-Gleichheitsoperator (=) nicht verwendet werden kann, um auf den Nullwert zu prüfen – Sie müssen stattdessen is null verwenden.
Mehr zu diesem und verwandten Themen:
-
Der SQL
case-Ausdruck -
Die
filterKlausel in SQL -
Der SQL
null-Wert -
Excel
sumifin SQL