首页 >数据库 >mysql教程 >如何在SQL中选择每组的第一行?

如何在SQL中选择每组的第一行?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-22 06:05:08781浏览

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

SQL中选择每个分组的第一行

在数据库管理中,经常需要检索特定数据集以进行分析或报告。这包括选择表中每个记录组的第一行。

假设您有两个表:

  • SM_Employee (employeeid, roleid, storeid)
  • SM_SalesRepWorkflow (workflowid, salesrepid, quantityassigned, quantityleft, month, year)

问题:

您的任务是选择当前月份和年份中SM_SalesRepWorkflow表中每个销售代表(SalesRepId)的详细信息的第一行。

解决方案:

为此,您可以使用SQL中的ROW_NUMBER()函数:

<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>

解释:

  • 外层查询为每个记录分配一个行号,按SalesRepId列进行分区,并按workflowid升序排列。
  • WHERE子句过滤结果,只包含每个SalesRepId的第一条记录。

此查询有效地标识了指定月份和年份中每个销售代表的第一行记录。它提供了一个简洁的输出,如问题陈述中所示:

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

通过应用ROW_NUMBER()函数,您可以高效地检索表中每个分组的第一行数据,从而根据所需参数进行进一步分析或报告。

以上是如何在SQL中选择每组的第一行?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn