通过MySQL中的三个表的并集来计算平均值的简单方法

时间:2017-05-22 22:45:25

标签: php mysql union

我有三个表的联合(t1,t2,t3)。每次返回完全相同的记录数,第一列是id,第二列是:

      1  10
      2  20
      3  20

      1  30
      2  30
      3  10

      1  20
      2  40
      3  60

是否有一种简单的SQL方法来计算平均值,最多只能得到:

      1   20
      2   30
      3   30

可以使用php代码将新值存储在另一个表t4中吗?

1 个答案:

答案 0 :(得分:3)

获得平均值的一种方法是使用SQL AVG()聚合函数。

如果我们想要平均“每个id”,那么我们需要包含GROUP BY子句。

我们可以使用内联视图查询代替表引用。 (MySQL将此称为派生表

以下是查询的示例:

SELECT t.id
     , AVG(t.amount) AS avg_amount
  FROM ( SELECT t1.id
              , t1.amount
           FROM t1
          UNION ALL
         SELECT t2.id
              , t2.amount
           FROM t2
          UNION ALL
         SELECT t3.id
              , t3.amount
           FROM t3
       ) t
 GROUP BY t.id 
 ORDER BY t.id