上个月的平均日值作为SQL语句

时间:2014-07-12 10:35:28

标签: php mysql sql

我有一个包含两列的表格,timestamp(如'1405184196')和value

我保存了一些测量值。

$day= time()-84600;
$result = mysql_query('SELECT timestamp, value FROM table WHERE timestamp >= "'.$day.'" ORDER BY timestamp ASC');

这就是我获取过去24小时所有值的方法。

但是有可能使用SQL语句获取上个月的平均日值,还是必须选择上个月的所有值并通过PHP计算每天的平均值?

2 个答案:

答案 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