对于这样的表格:
id num grp
1 12.3 group1
2 2.4 group2
3 7.6 group2
4 4.5 group1
5 8.9 group1
6 12.6 group1
7 1.1 group2
8 7.8 group1
我想向结果网格输出一个附加列,该列在 grp 值为 group1 的所有行中的值为 9.22,在 grp 值为 group2 的所有行中的值为 3.7。因此,在每种情况下,具有相同 grp 值的所有行的平均 num 值。
我还在学习 MySQL。我想我基本上知道我需要的组件(AVG、DISTINCT/GROUP BY,可能还有自连接?),但我正在努力寻找将它们组合在一起的正确方法。
最佳答案
你能试试下面的查询吗,使用 AVG
的 GROUP BY
,然后对同一张表使用 JOIN
,你可以获得额外的符合您期望的列值:
SELECT TA.id, TA.num, TA.grp , AG.AvgNum
FROM ( SELECT grp, AVG(num) AS AvgNum
FROM TableName
GROUP BY grp ) AG
JOIN TableName TA ON TA.grp = AG.grp
Rextester 演示:http://rextester.com/SZW95037
关于MySQL:对于在另一列中共享不同值的条目,如何在一列中获取 AVG 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44878643/