SQL查询:如何查找仅销售单一车型的汽车经销商
实现仅销售单一车型经销商的查询方案
你现有的GROUP BY dealership写法不符合SQL规范,非分组字段、非聚合字段不能直接放在SELECT后,逻辑上也拿不到你需要的结果。
核心实现逻辑
按经销商分组后,统计每个经销商的去重车型数量,筛选出数量等于1的分组即可。
方案1:仅查询符合条件的经销商+对应的单一车型
SELECT dealership, MAX(type) AS sold_only_type FROM car GROUP BY dealership HAVING COUNT(DISTINCT type) = 1;
这里用
MAX(type)是因为符合条件的分组只有唯一一种车型,用MAX/MIN都可以准确拿到该车型值。
方案2:查询符合条件的经销商下所有车辆的完整信息
如果需要拿到对应经销商下所有车辆的carid、engine等明细字段,可以用子查询关联实现:
SELECT t1.* FROM car t1 JOIN ( SELECT dealership FROM car GROUP BY dealership HAVING COUNT(DISTINCT type) = 1 ) t2 ON t1.dealership = t2.dealership;
原有思路问题说明
- 同时按
dealership和type分组时,多车型经销商会返回多条记录,没有经过聚合统计就没法直接筛选出仅单车型的经销商 - 分车型加
HAVING条件再UNION的方式,会把所有售卖过对应车型的经销商都返回,无法过滤掉同时售卖其他车型的经销商,所以不符合要求
内容的提问来源于stack exchange,提问作者RishtarCode47
相关产品推荐
相关产品推荐

