Menu
Coddy logo textTech

ROW_NUMBER function

Fait partie de la section Les fondamentaux du Journey SQL de Coddy — leçon 57 sur 72.

Les fonctions de fenêtre effectuent des calculs sur un ensemble de lignes de table liées à la ligne courante. Contrairement aux fonctions d'agrégation ordinaires, les fonctions de fenêtre ne regroupent pas les résultats en une seule ligne.

Ils sont particulièrement utiles lorsque vous devez :

  • Calculer des totaux cumulés
  • Classer des éléments au sein de groupes
  • Comparer les lignes actuelles avec les lignes précédentes/suivantes
  • Analyser les tendances sur des périodes de temps

Par exemple, voici quelques exemples du monde réel pour les cas d'utilisation des fonctions de fenêtre :

  • Analyse des ventes
    • Calculer les ventes cumulées jusqu'à chaque année (1995, 1997, 1999)
    • Trouver les produits les plus vendus pour chaque trimestre
  • Statistiques Sportives
    • Suivre le nombre de médailles olympiques à travers différentes années
    • Identifier les athlètes leaders dans chaque période de compétition (2000, 2004, 2008)

ROW_NUMBER() est l'une des fonctions de fenêtre les plus simples. Elle attribue un numéro séquentiel unique à chaque ligne dans l'ensemble de résultats. Voici comment l'utiliser :

SELECT column1, column2,
       ROW_NUMBER() OVER ([PARTITION BY column] [ORDER BY column]) as row_num
FROM table_name;

Il est obligatoire d'utiliser la clause OVER avec ROW_NUMBER() : ROW_NUMBER() OVER ()

Par exemple :

SELECT product_name, sale_date,
       ROW_NUMBER() OVER () as row_num
FROM sales;

Cela ajoute une colonne row_num qui compte de 1 au nombre total de lignes.

Remarque : La clause OVER peut contenir des instructions de tri et de partitionnement pour contrôler la façon dont la numérotation fonctionne.

challenge icon

Défi

Facile

Tables et colonnes disponibles :

  • <strong>liquids</strong>: <strong>id</strong>, <strong>density</strong>

Récupérez tous les liquides avec une densité supérieure à 5.677.

Numérotez le résultat (utilisez la fonction ROW_NUMBER()) et nommez cette colonne row_num

Aide-mémoire

Les fonctions de fenêtre effectuent des calculs sur un ensemble de lignes de table liées à la ligne courante sans regrouper les résultats en une seule ligne.

ROW_NUMBER() attribue un numéro séquentiel unique à chaque ligne :

SELECT column1, column2,
       ROW_NUMBER() OVER ([PARTITION BY column] [ORDER BY column]) as row_num
FROM table_name;

La clause OVER est obligatoire avec ROW_NUMBER() :

SELECT product_name, sale_date,
       ROW_NUMBER() OVER () as row_num
FROM sales;

Essayez vous-même

quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Les fondamentaux