Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL-如何按日期选择GROUPBY子句中的第一个字符串_Mysql_Greatest N Per Group - Fatal编程技术网

MySQL-如何按日期选择GROUPBY子句中的第一个字符串

MySQL-如何按日期选择GROUPBY子句中的第一个字符串,mysql,greatest-n-per-group,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对记录进行分组,并在每个组ID上设置“Name”列,以按日期显示表中显示的姓氏(日期中的高数字是按时间顺序排列的最后一个)。最终结果: ID Date Name Stat1 1 3 c 3 2 5 e 2 不幸的是,此代码: S

给定此事务表

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上设置“Name”列,以按日期显示表中显示的姓氏(日期中的高数字是按时间顺序排列的最后一个)。最终结果:

ID Date Name Stat1
1  3     c    3 
2  5     e    2
不幸的是,此代码:

Select ID,Date,Name,sum(Stat1)
From myTable
Group by ID
将生成“随机”名称,
如何强制选择每个组(ID)中的第一个/最后一个记录名(按日期)


谢谢

您可以通过这样的查询来完成

如果您想拥有组的第一行或最后一行,请将“最小”更改为“最大”:

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;