Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Fonction de fenêtrage COUNT
La fonction de fenêtrage COUNT compte les lignes définies par l’expression.
La fonction COUNT se décline en deux variations. COUNT(*) compte toutes les lignes de la table cible, qu’elles comprennent des valeurs null ou non. COUNT(expression) calcule le nombre de lignes avec des valeurs non NULL dans une colonne ou une expression spécifique.
Syntaxe
COUNT ( * | [ ALL ] expression) OVER ( [ PARTITION BY expr_list ] [ ORDER BY order_list frame_clause ] )
Arguments
- expression
-
Colonne cible ou expression sur laquelle la fonction opère.
- ALL
-
Avec l’argument ALL, la fonction conserve toutes les valeurs en double de l’expression pour le compte. La valeur par défaut est ALL. DISTINCT n’est pas pris en charge.
- OVER
-
Spécifie les clauses de fenêtrage des fonctions d’agrégation. La clause OVER différencie les fonctions d’agrégation de fenêtrage des fonctions d’agrégation d’un ensemble normal.
- PARTITION BY expr_list
-
Définit la fenêtre de la fonction COUNT en termes d’une ou de plusieurs expressions.
- ORDER BY order_list
-
Trie les lignes dans chaque partition. Si aucune clause PARTITION BY n’est spécifiée, ORDER BY utilise toute la table.
- frame_clause
-
Si une clause ORDER BY est utilisée pour une fonction d’agrégation, une clause de cadre explicite est requise. La clause de cadre affine l’ensemble de lignes dans la fenêtre d’une fonction, en incluant ou en excluant des ensembles de lignes du résultat ordonné. La clause de cadre se compose du mot-clé ROWS et des spécificateurs associés. Consultez Récapitulatif de la syntaxe de la fonction de fenêtrage.
Types de données
La fonction COUNT prend en charge tous les types de données d’argument.
Le type de retour pris en charge par la fonction COUNT est BIGINT.
Exemples
L’exemple suivant montre l’affichage de l’ID de ventes, la quantité et le nombre de toutes les lignes dès le début de la fenêtre de données :
select salesid, qty, count(*) over (order by salesid rows unbounded preceding) as count from winsales order by salesid; salesid | qty | count ---------+-----+----- 10001 | 10 | 1 10005 | 30 | 2 10006 | 10 | 3 20001 | 20 | 4 20002 | 20 | 5 30001 | 10 | 6 30003 | 15 | 7 30004 | 20 | 8 30007 | 30 | 9 40001 | 40 | 10 40005 | 10 | 11 (11 rows)
Pour obtenir une description de la table WINSALES, consultez Exemple de tableau contenant des exemples de fonctions de fenêtrage.
L’exemple suivant montre l’affichage de l’ID de ventes, la quantité et le nombre de lignes non null dès le début de la fenêtre de données. (Dans la table WINSALES, la colonne QTY_SHIPPED en contient.) NULLs
select salesid, qty, qty_shipped, count(qty_shipped) over (order by salesid rows unbounded preceding) as count from winsales order by salesid; salesid | qty | qty_shipped | count ---------+-----+-------------+------- 10001 | 10 | 10 | 1 10005 | 30 | | 1 10006 | 10 | | 1 20001 | 20 | 20 | 2 20002 | 20 | 20 | 3 30001 | 10 | 10 | 4 30003 | 15 | | 4 30004 | 20 | | 4 30007 | 30 | | 4 40001 | 40 | | 4 40005 | 10 | 10 | 5 (11 rows)