You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写统计类SQL查询,找出驾驶超过两辆汽车的司机?

解决方案

要找出驾驶超过两辆汽车的司机,可根据需求分两种场景处理:

场景1:统计司机所有驾驶过的车型(含不在Car表中的车型)

直接对Driver表按driver_id分组,统计每个司机的车型数量,再筛选数量大于2的记录:

SELECT driver_id
FROM Driver
GROUP BY driver_id
HAVING COUNT(DISTINCT car_type) > 2;

执行后会返回driver_id为1和2的司机——司机1驾驶了3种车型,司机2也驾驶了3种车型,均满足条件。

场景2:仅统计Car表中登记过的车型

如果只需要统计Car表中存在的合规车型,需先关联两张表再统计:

SELECT d.driver_id
FROM Driver d
JOIN Car c ON d.car_type = c.car_name
GROUP BY d.driver_id
HAVING COUNT(DISTINCT c.car_name) > 2;

这个查询仅返回driver_id为1的司机,因为司机2驾驶的Cheverolet和Tata不在Car表中,有效合规车型仅1种,不满足条件。

补充说明

  • 使用COUNT(DISTINCT car_type)是为了规避同一司机重复记录同一车型的情况,若能确定Driver表中每个司机的每个车型仅存一条记录,也可替换为COUNT(*),但COUNT(DISTINCT)的逻辑更严谨。
  • 必须用HAVING子句做分组后的筛选,不能用WHERE——WHERE仅能在分组前筛选行,无法处理分组后的统计结果。

内容的提问来源于stack exchange,提问作者Ravi Ravee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 21:24:27