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.
ROW_ fonction NUMBER de fenêtre
Attribue un nombre ordinal à la ligne en cours au sein d'un groupe de lignes, à partir de 1, en fonction de l'expression ORDER BY contenue dans la OVER clause. Si la clause optionnelle PARTITION BY est présente, les nombres ordinaux sont réinitialisés pour chaque groupe de lignes. Les lignes dont les valeurs sont égales pour les expressions ORDER BY reçoivent les différents numéros de ligne de manière non déterministe.
Syntaxe
ROW_NUMBER() OVER( [ PARTITION BY expr_list ] [ ORDER BY order_list ] )
Arguments
- ( )
-
La fonction ne prend pas d’arguments, mais les parenthèses vides sont obligatoires.
- OVER
-
La clause de fonction de fenêtre pour la NUMBER fonction ROW _.
- PARTITIONPAR expr_list
-
Facultatif. Une ou plusieurs expressions de colonne qui répartissent les résultats dans des ensembles de lignes.
- ORDERPAR order_list
-
Facultatif. Une ou plusieurs expressions de colonne qui définissent l’ordre des lignes au sein d’un ensemble. Si aucun PARTITION BY n'est spécifié, ORDER BY utilise la table entière.
Si ORDER BY ne produit pas d'ordre unique ou est omis, l'ordre des lignes n'est pas déterministe. Pour de plus amples informations, veuillez consulter Ordonnancement unique des données pour les fonctions de fenêtrage.
Type de retour
BIGINT
Exemples
Les exemples suivants utilisent la table WINSALES
. Pour obtenir une description de la table WINSALES
, consultez Exemple de tableau contenant des exemples de fonctions de fenêtrage.
L'exemple suivant classe le tableau par QTY ordre croissant, puis attribue un numéro de ligne à chaque ligne. Les résultats sont triés une fois que les résultats de la fonction de fenêtrage sont appliqués.
SELECT salesid, sellerid, qty, ROW_NUMBER() OVER( ORDER BY qty ASC) AS row FROM winsales ORDER BY 4,1;
salesid sellerid qty row ---------+----------+-----+----- 30001 | 3 | 10 | 1 10001 | 1 | 10 | 2 10006 | 1 | 10 | 3 40005 | 4 | 10 | 4 30003 | 3 | 15 | 5 20001 | 2 | 20 | 6 20002 | 2 | 20 | 7 30004 | 3 | 20 | 8 10005 | 1 | 30 | 9 30007 | 3 | 30 | 10 40001 | 4 | 40 | 11
L'exemple suivant partitionne la table par SELLERID et classe chaque partition par QTY (par ordre croissant), puis attribue un numéro de ligne à chaque ligne. Les résultats sont triés une fois que les résultats de la fonction de fenêtrage sont appliqués.
SELECT salesid, sellerid, qty, ROW_NUMBER() OVER( PARTITION BY sellerid ORDER BY qty ASC) AS row_by_seller FROM winsales ORDER BY 2,4;
salesid | sellerid | qty | row_by_seller ---------+----------+-----+----- 10001 | 1 | 10 | 1 10006 | 1 | 10 | 2 10005 | 1 | 30 | 3 20001 | 2 | 20 | 1 20002 | 2 | 20 | 2 30001 | 3 | 10 | 1 30003 | 3 | 15 | 2 30004 | 3 | 20 | 3 30007 | 3 | 30 | 4 40005 | 4 | 10 | 1 40001 | 4 | 40 | 2
L’exemple suivant montre les résultats lorsque les clauses facultatives ne sont pas utilisées.
SELECT salesid, sellerid, qty, ROW_NUMBER() OVER() AS row FROM winsales ORDER BY 4,1;
salesid sellerid qty row ---------+----------+-----+----- 30001 | 3 | 10 | 1 10001 | 1 | 10 | 2 10005 | 1 | 30 | 3 40001 | 4 | 40 | 4 10006 | 1 | 10 | 5 20001 | 2 | 20 | 6 40005 | 4 | 10 | 7 20002 | 2 | 20 | 8 30003 | 3 | 15 | 9 30004 | 3 | 20 | 10 30007 | 3 | 30 | 11