- Catégories :
Syntaxe et utilisation des fonctions de fenêtre (Classement)
ROW_NUMBER¶
Renvoie un numéro de ligne unique pour chaque ligne d’une partition de fenêtre.
Le numéro de ligne commence à 1 et continue séquentiellement.
Syntaxe¶
ROW_NUMBER() OVER (
[ PARTITION BY <expr1> [, <expr2> ... ] ]
ORDER BY <expr3> [ , <expr4> ... ] [ { ASC | DESC } ]
)
Arguments¶
Aucun.
Notes sur l’utilisation¶
expr1
etexpr2
spécifient la ou les colonne(s) ou expression(s) à partitionner. Vous pouvez effectuer la partition par 0, 1 ou plusieurs expressions.Par exemple, supposons que vous sélectionniez des données de plusieurs états (ou provinces) et que vous souhaitiez des numéros de ligne compris entre 1 et N dans chaque état ; dans ce cas, vous pouvez partitionner par état.
Si vous ne voulez qu’un seul groupe, omettez la clause PARTITIONBY.
expr3
etexpr4
spécifient la ou les colonnes ou expressions à utiliser pour déterminer l’ordre des lignes. Vous pouvez effectuer le classement par 1 ou plusieurs expressions.Par exemple, si vous souhaitez répertorier les agriculteurs par ordre de production de maïs, utilisez la colonne
bushels_produced
. Pour plus de détails, voir Exemples (dans ce chapitre).
Exemples¶
La requête ci-dessous montre comment attribuer des numéros de ligne dans des partitions. Dans ce cas, les partitions sont des bourses d’échange (par exemple « N » pour « NASDAQ »).
SELECT
symbol,
exchange,
shares,
ROW_NUMBER() OVER (PARTITION BY exchange ORDER BY shares) AS row_number
FROM trades;
+------+--------+------+----------+
|SYMBOL|EXCHANGE|SHARES|ROW_NUMBER|
+------+--------+------+----------+
|SPY |C | 250| 1|
|AAPL |C | 250| 2|
|AAPL |C | 300| 3|
|SPY |N | 100| 1|
|AAPL |N | 300| 2|
|SPY |N | 500| 3|
|QQQ |N | 800| 4|
|QQQ |N | 2000| 5|
|YHOO |N | 5000| 6|
+------+--------+------+----------+