我看了一遍,似乎无法找到明确的解决方案。对不起,如果我错过了。
我的问题: 我有每小时累积的数据并放在table1中 我希望table2.metric_包含当天的table1.metric_的平均值。
table1:record_key_,id_,metric_,date_
table2: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 :(得分: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
答案 1 :(得分: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语句
中根据需要添加date_没有测试查询,因为我没有MySQL测试数据库。
来源:INSERT-SELECT in MySQL reference
(我无法对已接受的答案发表评论,但我确定这是错的?它计算了有多少条目并计算平均值(一天有多少小时?)