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

Php 上个月的平均日值作为SQL语句,php,mysql,sql,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语句获取上个月的平均日值,或者我必须选择上个月的所有值并

我得到了一个包含两列的表,
timestamp
(如'1405184196')和
value

我保存了一些测量值

$day= time()-84600;
$result = mysql_query('SELECT timestamp, value FROM table WHERE timestamp >= "'.$day.'" ORDER BY timestamp ASC');
这是我获取过去24小时所有值的方式

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

您可以这样做:-

SELECT timestamp, AVG(value)
FROM table
GROUP BY timestamp
HAVING MONTH(timestamp) = MONTH(NOW()) - 1;
此查询计算上个月的平均值

以下几个问题:

1) 如果日期+时间存储在
时间戳
字段中,则此操作无效

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))

检查平均分组功能,但我如何分组?我只有几个时间戳值。所以我没有晴天或晴月谢谢。时间戳字段的内容类似于“1405184196”。是的,我指的是一个日历月;与7月份的所有数据一样,不是过去30天的数据。。。