Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL中三表并集求平均值的简便方法_Php_Mysql_Union - Fatal编程技术网

Php MySQL中三表并集求平均值的简便方法

Php MySQL中三表并集求平均值的简便方法,php,mysql,union,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中?获得

我有三个表的并集(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中?

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

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

我们可以使用内联视图查询代替表引用。(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

获取平均值的一种方法是使用SQL
AVG()
aggregate函数

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

我们可以使用内联视图查询代替表引用(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

如果再添加一列amount1,则如何计算?如果再添加一列amount1,则如何计算?