Kategorien:

Aggregatfunktionen (Allgemein), Fensterfunktionen (Allgemein, Fensterrahmen)

COUNT_IF

Gibt die Anzahl der Datensätze zurück, die eine Bedingung erfüllen.

Siehe auch:

COUNT

Syntax

Aggregatfunktion

COUNT_IF( <condition> )

Fensterfunktionen

COUNT_IF( <condition> )
    OVER ( [ PARTITION BY <expr1> ] [ ORDER BY <expr2> [ ASC | DESC ] [ <window_frame> ] ] )

Weitere Informationen zur Syntax von Fensterrahmen finden Sie unter Fensterrahmensyntax und Verwendung.

Argumente

Bedingung

Die Bedingung ist ein Ausdruck, der einen BOOLEAN-Wert („true“, „false“ oder NULL) ergibt.

Ausdruck1

Die Spalte für die Partitionierung, wenn das Ergebnis auf mehrere Fenster aufgeteilt werden soll.

Ausdruck2

Die Spalte, auf der die Sortierung jedes Fenster erfolgen soll. Beachten Sie, dass dies unabhängig von jeder ORDER BY-Klausel erfolgt, um das endgültige Resultset zu sortieren.

Nutzungshinweise

  • Wenn diese Funktion als Fensterfunktion aufgerufen wird:

    • Wenn in der OVER()-Klausel eine ORDER BY-Unterklausel verwendet wird, muss ein Fensterrahmen verwendet werden. Wenn kein Fensterrahmen angegeben ist, ist der Standard ein kumulativer Fensterrahmen:

      RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW

      Weitere Informationen zu Fensterrahmen, einschließlich Syntax und Beispiele, finden Sie unter Fensterrahmensyntax und Verwendung. Weitere Informationen zu impliziten Fensterrahmen finden Sie unter Hinweise zur Nutzung von Fensterrahmen.

Beispiele

Die Beispiele in diesem Abschnitt zeigen die Verwendung der Funktion COUNT_IF.

Mit den folgenden Anweisungen wird eine Tabelle zur Verwendung in den Beispielen erstellt:

CREATE TABLE basic_example (i_col INTEGER, j_col INTEGER);
INSERT INTO basic_example VALUES
    (11,101), (11,102), (11,NULL), (12,101), (NULL,101), (NULL,102);
SELECT * FROM basic_example;
+-------+-------+
| I_COL | J_COL |
|-------+-------|
|    11 |   101 |
|    11 |   102 |
|    11 |  NULL |
|    12 |   101 |
|  NULL |   101 |
|  NULL |   102 |
+-------+-------+

Das folgende Beispiel übergibt TRUE für die Bedingung, die die Anzahl aller Zeilen in der Tabelle zurückgibt:

SELECT COUNT_IF(TRUE) FROM basic_example;
+----------------+
| COUNT_IF(TRUE) |
|----------------|
|              6 |
+----------------+

Das folgende Beispiel gibt die Anzahl der Zeilen zurück, in denen der Wert in J_COL größer als der Wert in I_COL ist:

SELECT COUNT_IF(j_col > i_col) FROM basic_example;
+-------------------------+
| COUNT_IF(J_COL > I_COL) |
|-------------------------|
|                       3 |
+-------------------------+

Beachten Sie, dass die Anzahl im obigen Beispiel keine Zeilen mit NULL-Werten enthält. Wie in Ternäre Logik erläutert, ist das Ergebnis NULL, wenn ein Operand für einen Vergleichsoperator NULL ist, wodurch die mit COUNT_IF angegebene Bedingung nicht erfüllt wird.

Das folgende Beispiel gibt die Anzahl der Zeilen zurückgibt, die keine NULL-Werte enthalten.

SELECT COUNT_IF(i_col IS NOT NULL AND j_col IS NOT NULL) FROM basic_example;
+---------------------------------------------------+                           
| COUNT_IF(I_COL IS NOT NULL AND J_COL IS NOT NULL) |
|---------------------------------------------------|
|                                                 3 |
+---------------------------------------------------+