【问题标题】:MYSQL GROUP BY Query results seem limited to 31MYSQL GROUP BY 查询结果似乎限制为 31
【发布时间】:2014-07-08 19:42:43
【问题描述】:

我有一个 Raspberry Pi 温度监控系统设置,一切运行良好,只是我现在注意到我的 Daily Min、Max 和 AVG 查询没有显示超过 31 个结果。问题似乎出在 GROUP BY 语句上,当我将天数限制为小于 31 天时,我会获得所有最新数据,但如果超过 31 天,它只会显示最旧的数据。我有一张图表应该显示每天的最低、最高和平均温度。

如果有人可以帮助我,请。

这样,它只会显示从 26/05/2014(我记录的第一天)到 27/06/2014 的数据并停在那里:

SELECT DATE_FORMAT(date,'%d') AS date2, 
   MAX(temperature), 
   MAX(temp2), MIN(temperature), 
   MIN(temp2), AVG(temperature), AVG(temp2) 
FROM data
GROUP BY date2
ORDER BY id ASC

这样它会显示过去 31 天的数据(从今天开始减去 30 天)——这不是我想要的:

mysql_select_db("mysensors", $con);
$result = mysql_query("SELECT DATE_FORMAT(date,'%W %e %b %Y') AS date,
                              MAX(temperature), 
                              MAX(temp2), MIN(temperature), MIN(temp2),
                              AVG(temperature), AVG(temp2) 
                FROM data
                WHERE DATE(`date`) > DATE_SUB(NOW(), INTERVAL 30 DAY)
                GROUP BY DAY(date)
                ORDER BY id ASC") or die ("Imposible");

【问题讨论】:

  • 您将结果按天分组,这就是为什么您只能看到 31 个结果。只有 31 个不同的日子 (01-31)。
  • @Alwin 为什么不回答这个问题?这真是太棒了!
  • 使用像 GROUP BY DATE(date) 这样简单的方法为每个不同的“日期”(yyyy-mm-dd) 值获取一行。您可以在 GROUP BY 子句中使用其他表达式来获得等效结果,例如GROUP BY DATE_FORMAT(date,'%y-%m-%d')。 (这是评论,而不是答案,因为不清楚您实际问的是什么问题。)
  • 谢谢斯宾塞! - 会试一试。
  • @spencer7593 - 谢谢 - 成功了!抱歉,我是个菜鸟,一个月前才开始使用 PHP、MySQL 和 Python,忙着学习很多东西!谢谢大家。这个网站是最好的!

标签: php mysql group-by


【解决方案1】:

您将结果按天分组,这就是为什么您只能看到 31 个结果。

只有 31 个不同的日子 (01-31)。

【讨论】:

  • 难以置信。发现类似的东西。
  • 你们就像忍者!在我问你问题后花了一分钟告诉我我的错误:-) 谢谢。一个指针,我可以像一年中的一天一样对它进行不同的分组?
  • 根据 spencer7593 的建议,您可以使用 GROUP BY DATE_FORMAT(date,'%y-%m-%d') 按日期分组。
  • @Alwin 谢谢 - 现在一切都完美了 :-)
  • @马克酷!很高兴我能帮上忙! :)
猜你喜欢
  • 2020-02-06
  • 1970-01-01
  • 2014-04-28
  • 2011-09-30
  • 2023-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多