2014-07-12 63 views
-1

我得到了一個包含兩列的表timestamp(如'1405184196')和value作爲SQL語句的上個月的平均星期值

我保存了一些測量值。

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

這就是我如何得到過去24小時的所有值。

但是有可能使用SQL語句獲取上個月的平均日值,還是必須選擇上個月的所有值並通過PHP計算每天的平均值?

+0

檢查的AVG組功能 – Serpiton

+0

但我如何分組?我只有幾個時間戳值。所以我沒有明確的幾天或幾個月 – user3142695

回答

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

謝謝。時間戳字段的內容類似於'1405184196'。是的,我的意思是一個日曆月;像7月份的所有數據 - 不是最近30天... – user3142695

+0

我已經更新了您的條件的答案。 – topher

0

你可以這樣做: -

SELECT timestamp, AVG(value) 
FROM table 
GROUP BY timestamp 
HAVING MONTH(timestamp) = MONTH(NOW()) - 1; 

這個查詢計算平均上個月。

DEMO