SQL查询求助:统计在非家乡城市交易的客户数量
解决SQL统计异地交易客户数量的问题
要完成这个统计,你需要关联三张表获取客户家乡分支的城市,再和交易地点对比,最后去重统计符合条件的客户数。以下是完整的查询语句:
SELECT COUNT(DISTINCT c.customerid) AS 异地交易客户数 FROM customerdata c JOIN transactiondata t ON c.customerid = t.customerid JOIN branchdata b ON c.homebranch = b.branchnumber WHERE t.transactioncity != b.location;
语句说明:
- 表关联逻辑:
- 通过
customerid关联customerdata(别名c)与transactiondata(别名t),获取每个客户的交易地点信息。 - 通过
homebranch(客户表的家乡分支编号)关联branchdata(别名b),拿到客户家乡分支所在的城市b.location。
- 通过
- 筛选条件:
WHERE t.transactioncity != b.location过滤出交易地点与家乡分支城市不一致的记录。 - 去重计数:
COUNT(DISTINCT c.customerid)确保同一客户即使多次异地交易也仅被统计一次,最终得到异地交易的客户总数。
如果需要查看具体的客户明细,可以把统计语句替换为:
SELECT DISTINCT c.customerid, c.name, b.location AS 家乡城市, t.transactioncity AS 交易城市 FROM customerdata c JOIN transactiondata t ON c.customerid = t.customerid JOIN branchdata b ON c.homebranch = b.branchnumber WHERE t.transactioncity != b.location;
内容的提问来源于stack exchange,提问作者Colin Hertel
相关产品推荐
相关产品推荐

