You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

获取过去28天每日最大current值的SQL查询问题

解决每日最大值提取问题

嗨,我来帮你搞定这个问题!你原来的查询只返回一行结果,核心原因很简单:你没有按日期对数据进行分组。当你直接使用MAX(current)而不搭配GROUP BY时,SQL会把整个符合WHERE条件的数据集当成单一分组,自然只会返回一个全局最大值,而不是每天的最大值。

正确的查询语句

针对你的需求,我们需要先把时间戳ts提取出日期部分,然后按这个日期分组,再对每组计算current的最大值。修改后的SQL如下:

SELECT DATE(ts) AS date, MAX(current) AS daily_max_current
FROM mytable 
WHERE ts > DATE_ADD(NOW(), INTERVAL -28 DAY)
GROUP BY DATE(ts)
ORDER BY DATE(ts);

语句解释

  • DATE(ts):把带时间的戳转换为纯日期格式(比如2018-01-20 16:27:10变成2018-01-20),这样同一天的所有记录会被归为一组。
  • GROUP BY DATE(ts):告诉SQL按日期分组计算聚合值,这是获取每日最大值的关键。
  • MAX(current) AS daily_max_current:为每组(每天)计算current的最大值,并给这个结果列起一个清晰的别名。
  • ORDER BY DATE(ts):让结果按日期顺序排列,方便查看。

针对你示例数据的效果

用你给出的2018-01-20的几条记录来测试,这个查询会返回:

+------------+------------------+
| date       | daily_max_current|
+------------+------------------+
| 2018-01-20 | 439.37           |
+------------+------------------+

如果你的表中还有其他日期的记录,查询会自动为每个日期返回对应的最大值,完全符合你过去28天每天取最大值的需求。

内容的提问来源于stack exchange,提问作者Craver2000

火山引擎 最新活动