2012-07-16 61 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

(我不能接受的答案发表评论,但我确信这是错误的它计算多少项有平均计算出(多少个小时没有一天呢? )

相关问题