我正在尝试根据另一列获取一列的平均值。然后,我想创建一个新列,其中该平均值代表每个类别。 我似乎无法弄清楚这一点。感谢您的帮助。
这是我的 table
| value | category |
| 3 | a |
| 4 | a |
| 5 | a |
| 2 | b |
| 4 | b |
| 3 | b |
| 1 | c |
| 7 | c |
这就是我想要的:
| value | category | category avg |
| 3 | a | 4 |
| 4 | a | 4 |
| 5 | a | 4 |
| 2 | b | 3 |
| 4 | b | 3 |
| 3 | b | 3 |
| 1 | c | 4 |
| 7 | c | 4 |
最佳答案
您可以在 from
子句或 select
子句中使用子查询来执行此操作。这是一种方法:
select value, category,
(select avg(value) from table t2 where t.category = t2.category) as catgory_avg
from table t;
编辑:
如果您想更新表中的值,那么您可以执行以下操作:
update table t join
(select category, avg(value) as avgv
from table t
group by category
) tavg
on t.category = tavg.category
t.category_avg = tavg.avgv;
关于mysql - SQL按类别平均列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26790868/