Les fonctions de fenêtrage

Les fonctions de fenêtrage permettent de ranger des lignes ou d’effectuer des calculs sur des sous-groupes après avoir partitionné des enregistrements.

1. Numérotation séquentielle et rangement de lignes

Ce sont les fonctions qui permettent de ranger des lignes. RANK permet de numéroter des lignes dans un ordre. DENSE_RANK permet de numéroter les lignes dans un ordre avec des numéros à suivre. ROW_NUMBER permet de numéroter des lignes avec des numéros à suivre, telle une suite. La numérotation peut être effectuée sur des sous-groupes d’enregistrements.

Voici des exemples de numérotation de la table tarifs par prix, sans et avec partitionnement par type de chambre.

Exemples pour SQL Server, Oracle et PostgreSQL


SELECT Hotel, typeChambre, Prix, RANK() OVER(ORDER BY Prix DESC) 
AS Numero, DENSE_RANK() OVER(ORDER BY Prix DESC) AS NumeroASuivre, 
ROW_NUMBER() OVER(ORDER BY Prix DESC) AS Suite FROM Tarifs;
 

Hotel

typeChambre

Prix

Numero

NumeroASuivre

Suite

2

7

103,49

1

1

1

3

7

103,49

1

1

2

1

7

103,49

1

1

3

4

7

103,49

1

1

4

4

6

91,99

5

2

5

1

6

91,99

5

2

6


SELECT Hotel, typeChambre, Prix 
, RANK() OVER(PARTITION BY TypeChambre ORDER BY Prix DESC) AS Numero 
, DENSE_RANK() OVER(PARTITION BY TypeChambre ORDER BY Prix DESC) AS 
NumeroASuivre 
, ROW_NUMBER() OVER(PARTITION BY TypeChambre ORDER BY Prix DESC) AS Suite 
FROM Tarifs;
 

Hotel

typeChambre

Prix

Numero

NumeroASuivre

Suite

1

1

58,49

1

1

1

2

1

57,49

2

2

2

3

1

57,49...

Pour consulter la suite, découvrez le livre suivant :
couv_RI3SQL.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Les principales fonctions de conversion
Suivant
Les autres fonctions