【发布时间】: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,忙着学习很多东西!谢谢大家。这个网站是最好的!