如何计算关联数据库表中指定列的求和值?
关联表中列求和的实现方法
嘿,我来帮你一步步搞定这些关联表的列求和问题~首先咱们先明确下这三张表的关联关系:
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
相关产品推荐
相关产品推荐

