You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL数据库中如何添加按上传者分组的点赞平均值新列?

问题原因

你编写的SQL执行失败的核心问题是子查询未和外层更新行做Uploader关联,group by后会返回每个上传者对应的平均点赞结果(多条数据),数据库无法判断该给当前行匹配哪条结果,因此执行报错。

操作步骤

步骤1:新增目标列

首先需要给表添加AverageLikesOfUploader列,数值类型可根据需要调整为FLOAT/DECIMAL,示例语句:

ALTER TABLE mytable ADD COLUMN AverageLikesOfUploader INT;

步骤2:执行更新

提供两种通用兼容写法:

写法1:关联子查询写法(兼容所有主流SQL数据库)

在子查询中添加外层关联条件,保证每次只返回当前行上传者的平均点赞:

UPDATE mytable A
SET AverageLikesOfUploader = (
  SELECT AVG(B.Likes)
  FROM mytable B
  WHERE B.Uploader = A.Uploader
);

写法2:JOIN更新写法(性能更优,适合数据量较大的场景,支持MySQL 8+、PostgreSQL等)

先聚合计算每个上传者的平均点赞,再批量关联更新:

UPDATE mytable
JOIN (
  SELECT Uploader, AVG(Likes) AS avg_likes
  FROM mytable
  GROUP BY Uploader
) AS uploader_avg ON mytable.Uploader = uploader_avg.Uploader
SET mytable.AverageLikesOfUploader = uploader_avg.avg_likes;
最终效果

更新后表的结果如下:

PostIDUploaderLikesAverageLikesOfUploader
1James1819
2James2019
3Johny2829
4Johny3029
5Rocky4858
6Rocky6858

内容的提问来源于stack exchange,提问作者ssy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 22:54:08