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.
Défi
FacileTables 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
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
4More Keywords
The IN keywordThe BETWEEN keywordThe LIKE keywordThe AS keywordRecap - Cellphone Models2Conditions
Conditions BasicsThe AND keywordThe OR keywordThe NOT keywordMultiple Conditions CombinedParenthesisBooleans5Arithmetic Operations
Mathematical OperatorsMathematical ColumnsThe Modulo OperationThe ROUND() Function8Statistics
Built-In Aggregate Part 1Built-In Aggregate Part 2Grouping Part 1Grouping Part 2Subqueries Part 1Subqueries Part 2Recap - Total Gain ShopRecap - Scooter ShopRecap - Coffee Shop11Window Functions part 1
ROW_NUMBER functionORDER BY criterionPARTITION BY criterionPARTITION & ORDERLEAD & LAG FunctionsRecap - LEAD & LAGRecap - PicturesRecap - Boxes3Specific Return Format
Null valuesSort Results Part 1Sort Results Part 2Recap - Cyber Security FirmLimit number of recordsRecap - Vehicle Factory6Intro Challenges
Recap - Parliamentary ElectionRecap - Police Criminal ArrestRecap - Bar Beverage ContainerRecap - Engineer new columns