- Catégories :
Fonctions d’agrégation (Général) , Fonctions de la fenêtre (Général, Cadre de fenêtre)
COUNT_IF¶
Renvoie le nombre d’enregistrements qui satisfont une condition ou NULL si aucun enregistrement ne satisfait à la condition.
- Voir aussi :
Syntaxe¶
Fonction d’agrégation
COUNT_IF( <condition> )
Fonction de fenêtre
COUNT_IF( <condition> )
OVER ( [ PARTITION BY <expr1> ] [ ORDER BY <expr2> [ ASC | DESC ] [ <window_frame> ] ] )
Pour plus d’informations sur la syntaxe window_frame
, voir Syntaxe et utilisation du cadre de fenêtre .
Arguments¶
condition
La condition est une expression qui doit donner une valeur BOOLEAN (True, False ou NULL).
expr1
La colonne sur laquelle partitionner, si vous voulez que le résultat soit divisé en plusieurs fenêtres.
expr2
La colonne selon laquelle classer chaque fenêtre. Notez que ceci est distinct de toute clause ORDER BY pour classer l’ensemble de résultats final.
Renvoie¶
Si la fonction ne renvoie pas NULL, le type de données de la valeur renvoyée est NUMBER.
Notes sur l’utilisation¶
Lorsque cette fonction est appelée en tant que fonction de fenêtre :
Si une sous-clause ORDER BY est utilisée à l’intérieur de la clause OVER(), un cadre de fenêtre doit être utilisé. Si aucun cadre de fenêtre n’est spécifié, la valeur par défaut est un cadre de fenêtre cumulatif :
RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
Pour plus d’informations sur les cadres de fenêtre, y compris la syntaxe et des exemples, voir Syntaxe et utilisation du cadre de fenêtre. Pour plus d’informations sur les cadres de fenêtre implicites, voir Notes sur l’utilisation du cadre de fenêtre.
Exemples¶
Les exemples de cette section montrent comment utiliser la fonction COUNT_IF
.
Les instructions suivantes configurent une table à utiliser dans les exemples :
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 | +-------+-------+
L’exemple suivant valide TRUE
pour la condition, qui renvoie le nombre de toutes les lignes de la table :
SELECT COUNT_IF(TRUE) FROM basic_example;+----------------+ | COUNT_IF(TRUE) | |----------------| | 6 | +----------------+
L’exemple suivant renvoie le nombre de lignes où la valeur dans J_COL
est supérieure à la valeur dans I_COL
:
SELECT COUNT_IF(j_col > i_col) FROM basic_example;+-------------------------+ | COUNT_IF(J_COL > I_COL) | |-------------------------| | 3 | +-------------------------+
Notez que dans l’exemple ci-dessus, le nombre n’inclut pas les lignes avec des valeurs NULL. Comme expliqué dans Logique ternaire, lorsqu’une opérande pour un opérateur de comparaison est NULL, le résultat est NULL, ce qui ne satisfait pas la condition spécifiée par COUNT_IF
.
L’exemple suivant renvoie le nombre de lignes qui ne contiennent aucune valeur NULL.
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 | +---------------------------------------------------+