如何统计DISTINCT查询结果中各车辆类型的元素数量
问题解决方法
你之前组合使用DISTINCT和WHERE报错,核心原因是没有理清去重逻辑和统计逻辑的先后顺序,你要的是先对「车型+车牌」组合去重,再按车型分组统计数量,有两种可行的实现方案:
方案1:子查询嵌套(逻辑最直观,和你的需求顺序完全匹配)
先通过子查询拿到所有去重的「车型+车牌」记录,外层再按车型分组计数:
SELECT vehicle_type_name, COUNT(*) AS type_vehicle_count FROM ( -- 这部分就是你之前执行的去重查询 SELECT DISTINCT vehicle_type_name, vehicle_plate_number FROM tbl_transactions ) AS unique_vehicle_list GROUP BY vehicle_type_name;
方案2:单查询直接统计(性能更优,无需临时表)
直接用COUNT(DISTINCT)语法,在聚合的时候自动对车牌去重,一步得到结果:
SELECT vehicle_type_name, COUNT(DISTINCT vehicle_plate_number) AS type_vehicle_count FROM tbl_transactions GROUP BY vehicle_type_name;
两种方案的输出结果完全一致,都会返回每个车型对应的不重复车辆总数,包含2 Wheeler、4 Wheeler等所有存在的车型分类。
内容的提问来源于stack exchange,提问作者klaus21
相关产品推荐
相关产品推荐

