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 filter Klausel in SQL

  • Der SQL null-Wert

  • Excel sumif in SQL

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.