SQL查询需求:筛选名称含"Will"的客户并统计总贷款额
解决方案
要实现你需要的功能,得修正原查询里的几个问题:没有正确关联两张表、缺少聚合汇总和分组逻辑,以下是调整后的SQL:
SELECT c.name, SUM(l.loan_amount) AS TotalLoanValue FROM customers c JOIN loans l ON c.customer_id = l.customer_id WHERE c.name LIKE '%Will%' GROUP BY c.name ORDER BY TotalLoanValue DESC;
关键说明:
- 表关联:用
JOIN替代逗号连接表,通过customer_id(如果你的关联字段不是这个,换成实际字段)把客户和对应的贷款记录绑定,避免产生无效的交叉数据。 - 汇总金额:
SUM(l.loan_amount)计算每个客户的所有贷款总和,AS TotalLoanValue给汇总列指定要求的名称。 - 分组去重:
GROUP BY c.name按客户名称分组,确保每个客户只返回一条汇总记录。 - 排序:
ORDER BY TotalLoanValue DESC让结果按总贷款金额从大到小排列。
如果你的数据库对大小写敏感,需要匹配不区分大小写的"Will",可以改成LOWER(c.name) LIKE '%will%'(MySQL/MariaDB),或者用ILIKE '%Will%'(PostgreSQL)。
内容的提问来源于stack exchange,提问作者Zaeem Mahboob
相关产品推荐
相关产品推荐

