2012-07-16 49 views
0

我已經查看了所有內容,似乎無法找到明確的解決方案。對不起,如果我錯過了。如何將table1.column1的值設置爲table2.column2的平均值

我的問題: 我有數據每小時積累並放在表1中 我希望table2.metric_包含該日的平均值table1.metric_。

表1:record_key_,ID_,metric_,DATE_

表2:record_key_,ID_,metric_,DATE_

獲得的一天記錄列表使用: SELECT * FROM table1 t WHERE t.date_> = DATE_SUB(NOW(),INTERVAL 1 DAY)WHERE t.id _ ='id1';

對於table2的INSERT查詢是什麼樣子的,以便table2.metric_是來自table1.metric_列的值對於前一個SELECT語句返回的table1中id1的所有記錄的平均值?

+0

AVG函數只返回單行。現在告訴我你要插入單行還是其他什麼? – 2012-07-16 07:10:46

+0

單行,即時試圖將小時數據合併到日常平均值 – Stephan 2012-07-16 07:12:32

回答

1
insert into table2 SELECT avg(total) FROM (SELECT count(*) as Total FROM table1 t WHERE t.col= DATE_SUB(NOW(),INTERVAL 1 DAY) group by colname) as a 
+0

非常感謝你先生 – Stephan 2012-07-16 07:27:47

0
INSERT INTO table2 metric_ 
     SELECT AVG(t.metric_) FROM table1 t WHERE t.date_ >= DATE_SUB(NOW(),INTERVAL 1 DAY) WHERE t.id_='id1'); 

應該是解決方案 你在SELECT語句

沒有測試查詢,因爲我沒有MySQL的測試數據庫願意,可以添加格式化DATE_。

來源:INSERT-SELECT in MySQL reference

(我不能接受的答案發表評論,但我確信這是錯誤的它計算多少項有平均計算出(多少個小時沒有一天呢? )

相關問題