Maison >base de données >tutoriel mysql >Comment sélectionner la première ligne de chaque groupe dans SQL ?

Comment sélectionner la première ligne de chaque groupe dans SQL ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-22 06:05:08744parcourir

How to Select the First Row of Each Group in SQL?

Sélectionnez la première ligne de chaque groupe en SQL

Dans la gestion de bases de données, il est souvent nécessaire de récupérer des ensembles de données spécifiques à des fins d'analyse ou de reporting. Cela implique de sélectionner la première ligne de chaque groupe d'enregistrements dans le tableau.

Supposons que vous ayez deux tables :

  • SM_Employee (employeeid, roleid, storeid)
  • SM_SalesRepWorkflow (workflowid, salesrepid, quantité attribuée, quantité restante, mois, année)

Question :

Votre tâche consiste à sélectionner la première ligne de détails pour chaque représentant commercial (SalesRepId) dans la table SM_SalesRepWorkflow pour le mois et l'année en cours.

Solution :

Pour cela vous pouvez utiliser la fonction ROW_NUMBER() en SQL :

<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
) AS subquery
WHERE rownumber = 1;</code>

Explication :

  • La requête externe attribue à chaque enregistrement un numéro de ligne, partitionne par colonne SalesRepId et trie par workflowid par ordre croissant.
  • La clause WHERE filtre les résultats pour inclure uniquement le premier enregistrement de chaque SalesRepId.

Cette requête identifie efficacement la première ligne d'enregistrements pour chaque représentant commercial au cours du mois et de l'année spécifiés. Il fournit un résultat concis, comme indiqué dans l'énoncé du problème :

  • WF_101 : EMP_101 : 100 : 90 : mai : 2013
  • WF_101 : EMP_102 : 100 : 100 : mai : 2013
  • WF_101 : EMP_103 : 100 : 80 : mai : 2013

En appliquant la fonction ROW_NUMBER(), vous pouvez récupérer efficacement la première ligne de données pour chaque groupe du tableau pour une analyse plus approfondie ou un rapport basé sur les paramètres requis.

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