Fonction ROW_NUMBER
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 actuelle. Contrairement aux fonctions d’agrégation classiques, 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 aux lignes précédentes/suivantes
- Analyser les tendances sur des périodes données
Par exemple, voici quelques exemples concrets 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 au fil des différentes années
- Identifier les athlètes en tête pour chaque période de compétition (2000, 2004, 2008)
ROW_NUMBER() est l’une des fonctions de fenêtrage les plus simples. Elle attribue un numéro séquentiel unique à chaque ligne de 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 jusqu’au nombre total de lignes.
Remarque : la clause OVER peut contenir des instructions de tri et de partitionnement pour contrôler le fonctionnement de la numérotation.
Défi
FacileTables et colonnes disponibles :
liquids:id,density
Récupère tous les liquides dont la densité est supérieure à 5.677.
Numérote le résultat (utilise la fonction ROW_NUMBER()) et appelle cette colonne row_num
Essayez vous-même
-- Numéroter chaque ligne du résultat filtré en utilisant une fonction de fenêtre
SELECT id, density, ____ as row_num
FROM liquids
WHERE density > ____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
1Introduction
IntroductionQu’est-ce qu’une base de donnéesConcepts des bases de donnéesValeurs uniques4D’autres mots-clés
Le mot-clé INLe mot-clé BETWEENLe mot-clé LIKELe mot-clé ASRécapitulatif - Modèles de téléphones portables2Conditions
Bases des conditionsLe mot-clé ANDLe mot-clé ORLe mot-clé NOTCombinaison de plusieurs conditionsParenthèsesBooléens5Opérations arithmétiques
Opérateurs mathématiquesColonnes mathématiquesL’opération moduloLa fonction ROUND()8Statistiques
Agrégats intégrés, partie 1Agrégats intégrés, partie 2Regroupement, partie 1Regroupement, partie 2Sous-requêtes, partie 1Sous-requêtes, partie 2Récapitulatif - Boutique Total GainRécapitulatif - Boutique de scootersRécapitulatif - Café11Fonctions de fenêtre, partie 1
Fonction ROW_NUMBERCritère ORDER BYCritère PARTITION BYPARTITION et ORDERFonctions LEAD et LAGRécapitulatif - LEAD et LAGRécapitulatif - ImagesRécapitulatif - Boîtes3Format de retour spécifique
Valeurs NULLTrier les résultats, partie 1Trier les résultats, partie 2Récapitulatif - Entreprise de cybersécuritéLimiter le nombre d’enregistrementsRécapitulatif - Usine de véhicules6Défis d’introduction
Récapitulatif - Élection parlementaireRécapitulatif - Arrestation criminelle par la policeRécapitulatif - Récipient de boisson au barRécapitulatif - Ingénieur de nouvelles colonnes9Tables multiples
Jointure de base, partie 1Jointure de base, partie 2Récapitulatif - JointureAuto-jointureRécapitulatif - Auto-jointureUnionSimplifier les requêtes, mot-clé WITHRécapitulatif - Requêtes WITHRécapitulatif - Entrepreneur immobilier12Fonctions de fenêtre – partie 2
Fonctions RANK & DENSE_RANKRécapitulatif – RANK & DENSE_RANKFonction NTILEFonctions d’agrégationCritère ROWS & RANGEEntraînez-vous par vous-même : Playground SQL