Maison >base de données >tutoriel mysql >Comment sélectionner la première ligne de chaque groupe dans SQL à l'aide de ROW_NUMBER() ?

Comment sélectionner la première ligne de chaque groupe dans SQL à l'aide de ROW_NUMBER() ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-22 06:13:14603parcourir

How to Select the First Row of Each Group in SQL Using ROW_NUMBER()?

Obtenez la première ligne d'enregistrements pour chaque groupe

En SQL, récupérer le premier enregistrement de chaque groupe unique est une tâche courante. Considérez cette situation, nous avons deux tables, SM_Employee et SM_SalesRepWorkflow. En combinant ces deux tableaux, nous souhaitons sélectionner la première ligne d'informations de SM_SalesRepWorkflow pour chaque commercial pour le mois et l'année en cours, triées par SalesRepId.

Pour y parvenir, nous pouvons profiter des fonctionnalités de la fonction ROW_NUMBER(). Voici une explication détaillée de la requête :

<code class="language-sql">SELECT *
FROM(
  SELECT workflowid,
         salesRepId,
         quantityAssigned,
         quantityLeft,
         month,
         year,
         ROW_NUMBER()
           OVER (PARTITION BY salesRepId ORDER BY workflowid) AS rownumber
  FROM sm_salesRepWorkflow
)
WHERE rownumber = 1;</code>
  • La sous-requête calcule le numéro de ligne de chaque représentant commercial en fonction de salesRepId et trie par workflowid par ordre croissant.
  • La requête principale filtre ensuite la sous-requête pour inclure uniquement les lignes portant le numéro de ligne 1, garantissant ainsi que nous récupérons la première ligne pour chaque salesRepId.

En utilisant la fonction ROW_NUMBER(), nous pouvons sélectionner efficacement l'enregistrement initial de chaque commercial tout en respectant les conditions spécifiées. Cette technique est utile dans divers scénarios où vous devez regrouper et sélectionner la première ligne de chaque groupe.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn