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

如何计算关联数据库表中指定列的求和值?

关联表中列求和的实现方法

嘿,我来帮你一步步搞定这些关联表的列求和问题~首先咱们先明确下这三张表的关联关系:

  • Contacts.id 和 ContactAttributes.id 是一对一关联(看起来每个联系人对应一条属性记录)
  • Contacts.id 和 Reviews.contact_id 是一对多关联(一个联系人可以有多条评价记录)

接下来我用具体的SQL示例来演示不同场景下的求和操作:

1. 单表直接求和

如果只是想对某个单表的列求和,比如计算所有评价的总评分,直接用SUM()函数即可:

SELECT SUM(rating) AS total_rating
FROM Reviews;

2. 关联多表后条件求和

比如想计算拥有自有交通工具的联系人的所有评价总评分,这时候需要关联三张表,再添加过滤条件:

SELECT SUM(r.rating) AS total_agent_rating
FROM Contacts c
JOIN ContactAttributes ca ON c.id = ca.id
JOIN Reviews r ON c.id = r.contact_id
WHERE ca.own_transport = 'Yes';

这里的逻辑是:先通过联系人ID关联三张表,过滤出有自有交通工具的记录,再对这些记录的评分求和。

3. 按分组求和(比如每个联系人的总评分)

如果需要按联系人维度统计各自的总评分,可以结合GROUP BY和SUM():

SELECT c.name, c.surname, SUM(r.rating) AS contact_total_rating
FROM Contacts c
JOIN Reviews r ON c.id = r.contact_id
GROUP BY c.id, c.name, c.surname;

这样就能得到每个联系人对应的所有评价的总分啦。

小提示

  • 如果某些联系人没有评价记录,SUM()会返回NULL,可以用COALESCE(SUM(r.rating), 0)把NULL替换成0,避免结果显示为空。
  • 关联表时要注意JOIN类型:如果想包含没有评价的联系人,要用LEFT JOIN代替JOIN,否则会过滤掉无评价的记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:08:26