我有一个包含两列的表格,timestamp
(如'1405184196')和value
。
我保存了一些测量值。
$day= time()-84600;
$result = mysql_query('SELECT timestamp, value FROM table WHERE timestamp >= "'.$day.'" ORDER BY timestamp ASC');
这就是我获取过去24小时所有值的方法。
但是有可能使用SQL语句获取上个月的平均日值,还是必须选择上个月的所有值并通过PHP计算每天的平均值?
答案 0 :(得分:1)
Anish's answer的几个问题:
1)如果日期+时间存储在timestamp
字段中,则无法正常工作。
2)它假设OP意味着上个月,即6月,5月等,而不是最后说的30天。
这解决了这些问题:
SELECT DATE(`timestamp`) as `timestamp`, AVG(value)
FROM table
WHERE `timestamp` >= CURDATE() - INTERVAL 1 MONTH
GROUP BY DATE(`timestamp)
修改强>
由于时间戳是一个unix时间戳,而OP想要一个日历月:
SELECT DATE(FROM_UNIX(`timestamp`)) as `timestamp`, AVG(value)
FROM table
WHERE MONTH(FROM_UNIX(`timestamp`)) = MONTH(NOW() - 1)
GROUP BY DATE(FROM_UNIX(`timestamp))
答案 1 :(得分:0)
你可以这样做: -
SELECT timestamp, AVG(value)
FROM table
GROUP BY timestamp
HAVING MONTH(timestamp) = MONTH(NOW()) - 1;
此查询计算上个月的平均值。
<强> DEMO 强>