- Kategorien:
Aggregatfunktionen (General) , Fensterfunktionen
COUNT_IF¶
Gibt die Anzahl der Datensätze zurück, die eine Bedingung erfüllen, oder NULL, wenn kein Datensatz die Bedingung erfüllt.
- Siehe auch:
Syntax¶
Aggregatfunktion
COUNT_IF( <condition> )
Fensterfunktionen
COUNT_IF( <condition> )
OVER ( [ PARTITION BY <expr1> ] [ ORDER BY <expr2> [ ASC | DESC ] [ <window_frame> ] ] )
Die detaillierte Syntax von window_frame
finden Sie unter Syntax und Verwendung von Fensterfunktionen.
Argumente¶
condition
Die Bedingung ist ein Ausdruck, der einen BOOLEAN-Wert („true“, „false“ oder NULL) ergibt.
expr1
Die Spalte für die Partitionierung, wenn das Ergebnis auf mehrere Fenster aufgeteilt werden soll.
expr2
Die Spalte, in der jedes Fenster sortiert werden soll. Beachten Sie, dass dies unabhängig von der ORDER BY-Klausel ist, die das endgültige Resultset sortiert.
Rückgabewerte¶
Wenn die Funktion nicht NULL zurückgibt, ist der Datentyp des zurückgegebenen Werts NUMBER.
Nutzungshinweise¶
Wenn diese Funktion als Fensterfunktion mit einer ORDER BY-Klausel aufgerufen wird, müssen Sie einen Fensterrahmen angeben. Wenn Sie keinen Fensterrahmen angeben, wird der folgende Standardrahmen verwendet:
RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
Weitere Informationen über Fensterrahmen, einschließlich Syntax, Nutzungshinweise und Beispiele, finden Sie unter Syntax und Verwendung von Fensterfunktionen.
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 ORDER BY i_col;+-------+-------+ | 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 | +---------------------------------------------------+