使用聚合函数按日期时间分组的MySQL

使用聚合函数按日期时间分组的MySQL,mysql,sql,group-by,aggregate,Mysql,Sql,Group By,Aggregate,我似乎记得这在Oracle中可以正常工作,但我不知道如何在MySQL中正确工作 我的问题是: SELECT DateTimeStamp, MAX(Value) FROM t1 GROUP BY YEAR(DateTimeStamp), MONTH(DateTimeStamp), DAY(DateTimeStamp); 运行此命令会产生如下结果: DateTimeStamp Value 2015-09-09 00:00:29 100 2015-09-10 00:00:05 58 20

我似乎记得这在Oracle中可以正常工作,但我不知道如何在MySQL中正确工作

我的问题是:

SELECT DateTimeStamp, MAX(Value) FROM t1
GROUP BY YEAR(DateTimeStamp), MONTH(DateTimeStamp), DAY(DateTimeStamp);
运行此命令会产生如下结果:

DateTimeStamp       Value
2015-09-09 00:00:29 100
2015-09-10 00:00:05 58
2015-09-11 00:00:57 62
2015-09-12 00:00:49 69
2015-09-13 00:00:43 97
但我希望它看起来像这样,日期时间戳与值匹配:

DateTimeStamp       Value
2015-09-09 03:28:29 100
2015-09-10 03:29:05 58
2015-09-11 03:31:57 62
2015-09-12 03:30:49 69
2015-09-13 03:28:43 97

正在选择正确的最大值,但未选择这些最大值的匹配日期时间戳。相反,它看起来像是选择了每天的第一个DateTimeStamp值。如何更改查询以显示匹配的日期时间戳?

如果只需去除时间段,则需要使用
日期
功能:

SELECT date(DateTimeStamp) AS DateTimeStamp, MAX(Value) AS MaxValue
FROM t1
GROUP BY date(DateTimeStamp);

注意:当您选择某个对象时,按该对象分组通常是有意义的。如果您只需要每天的最大值,则无需按
年(DateTimeStamp)、月(DateTimeStamp)、日(DateTimeStamp)
进行分组。

如果您只需要剥离时间段,则需要使用
日期
功能:

SELECT date(DateTimeStamp) AS DateTimeStamp, MAX(Value) AS MaxValue
FROM t1
GROUP BY date(DateTimeStamp);

注意:当您选择某个对象时,按该对象分组通常是有意义的。如果您只需要每天的最大值,那么按
年(DateTimeStamp)、月(DateTimeStamp)、日(DateTimeStamp)
分组是没有意义的。

您是否尝试过选择最大值(DateTimeStamp)?是-这只选择了每天的最大日期时间戳。“保存某一列最大值的行”可以在works中找到,直到你需要一个打领带的VHU,它工作得很好。在这个场景中,我可以通过使用max DateTimeStamp来解释关系。谢谢你试过选择MAX(DateTimeStamp)吗?是的-那只是选择了每天的最大DateTimeStamp。“保存某一列最大值的行”可以从works中找到,非常好,直到你需要一个领带断开VHU,它工作得非常好。在这个场景中,我可以通过使用max DateTimeStamp来解释关系。谢谢