如何将 table1.column1 的值设置为 table2.column2 的平均值
Posted
技术标签:
【中文标题】如何将 table1.column1 的值设置为 table2.column2 的平均值【英文标题】:How to set value of table1.column1 to an average of table2.column2 【发布时间】:2012-07-16 07:06:56 【问题描述】:我已经查看了所有内容,但似乎找不到明确的解决方案。如果我错过了,对不起。
我的问题: 我有每小时累积并放在 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 记录的平均值?
【问题讨论】:
AVG 函数只返回单行。现在告诉我你想插入单行还是其他什么? 单行,我正在尝试将每小时数据合并为每日平均值 【参考方案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
【讨论】:
【参考方案2】: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
(我无法评论接受的答案,但我很确定这是错误的?它计算有多少条目并计算平均值(一天有多少小时?)
【讨论】:
以上是关于如何将 table1.column1 的值设置为 table2.column2 的平均值的主要内容,如果未能解决你的问题,请参考以下文章
sql server 2000 中如何知道 table1.column1 是不是存在
SQL 中的 LEFT JOIN 但不包括连接 where table1.column1 = 'specific_value'