我正在尝试根据另一列获得列的平均值。然后,我想创建一个新列,其中每个类别的平均值代表。 我似乎无法弄清楚这一点。谢谢你的帮助。
这是我的表
| 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 |
答案 0 :(得分:1)
您可以使用子查询在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;
答案 1 :(得分:0)
根据您的评论,您似乎想要使用值的平均值更新表格。这可以通过更新和类似的选择来完成
UPDATE table t,
( SELECT AVG(value) as avg_val, category
FROM table
GROUP BY category
) r
SET t.category_avg = r.avg_val
WHERE t.category = r.category