我有三个表的联合(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中吗?
答案 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