【问题标题】:How to set value of table1.column1 to an average of table2.column2如何将 table1.column1 的值设置为 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 函数只返回单行。现在告诉我你想插入单行还是其他什么?
  • 单行,我正在尝试将每小时数据合并为每日平均值

标签: mysql select sum average


【解决方案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

    (我无法评论接受的答案,但我很确定这是错误的?它计算有多少条目并计算平均值(一天有多少小时?)

    【讨论】:

      猜你喜欢
      • 2017-08-05
      • 2021-11-15
      • 1970-01-01
      • 2014-12-07
      • 1970-01-01
      • 2016-01-20
      • 1970-01-01
      • 2022-01-28
      • 1970-01-01
      相关资源
      最近更新 更多