【问题标题】:MySQL - How to select first string in group by clause by dateMySQL - 如何按日期选择分组中的第一个字符串
【发布时间】:2016-12-04 20:37:30
【问题描述】:

给定这个交易表

ID Date Name Stat1
1  1     a     1
1  2     b     1
1  3     c     1 
2  4     d     1
2  5     e     1

我想按 ID 对记录进行分组,并让每个组 ID 的“名称”列按日期显示姓氏,因为它出现在表中(日期中的高数字按时间顺序排列在最后一个)。最终结果:

ID Date Name Stat1
1  3     c    3 
2  5     e    2

不幸的是这段代码:

Select ID,Date,Name,sum(Stat1)
From myTable
Group by ID

将生成“随机”名称,
我如何强制选择每个组(ID)中的第一个/最后一个记录名称(按日期)?

谢谢

【问题讨论】:

    标签: mysql greatest-n-per-group


    【解决方案1】:

    你可以用这样的查询来做到这一点。

    如果您想拥有组的第一行或最后一行,请将 min 更改为 max:

    SELECT
      result.id,
      result.mdate,
      mt.name,
      result.stat1
    FROM (
      Select
        ID,
        min(date) mdate,
        sum(Stat1) as stat1
      From myTable
      Group by ID
    ) AS result
    LEFT JOIN myTable mt 
    ON    mt.id = result.id
    AND mt.date = result.mdate;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-07
      • 2013-02-11
      • 1970-01-01
      • 1970-01-01
      • 2020-11-06
      • 1970-01-01
      • 1970-01-01
      • 2019-07-25
      相关资源
      最近更新 更多