MySQL - 如何按日期分组选择第一个字符串

时间:2016-12-04 20:37:31

标签: mysql greatest-n-per-group

鉴于此交易表

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对记录进行分组,并列出' Name'每个组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)中的第一个/最后一个记录名称(按日期)?

由于

1 个答案:

答案 0 :(得分: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;