- 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¶
- expr1et- expr2spé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. 
- expr3et- expr4spé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|
+------+--------+------+----------+