如何修改SQL语句,筛选出销售记录超10次的男性员工姓名
解决方法:查询符合条件的男性员工姓名
直接修改你找到的SQL语句,补充性别过滤条件并调整次数阈值即可,以下是两种可行的写法:
写法一:主查询中添加性别过滤
SELECT s.firstName, s.lastName FROM Staff s INNER JOIN ( SELECT staffNumber FROM StaffSoldVehicle GROUP BY staffNumber HAVING COUNT(*) > 10 -- 调整为需求的"超过10次" ) sv ON s.staffNumber = sv.staffNumber WHERE s.gender = 'm'; -- 添加男性员工过滤条件
写法二:先过滤Staff表再关联
SELECT s.firstName, s.lastName FROM ( -- 先筛选出所有男性员工 SELECT staffNumber, firstName, lastName FROM Staff WHERE gender = 'm' ) s INNER JOIN ( -- 统计销售次数超过10次的员工编号 SELECT staffNumber FROM StaffSoldVehicle GROUP BY staffNumber HAVING COUNT(*) > 10 ) sv ON s.staffNumber = sv.staffNumber;
关键修改点说明:
- 把原SQL中
HAVING COUNT(staffNumber) > 1改为COUNT(*) > 10,匹配需求里"出现次数超过10次"的要求;COUNT(*)在这里和COUNT(staffNumber)效果一致,写法更简洁。 - 移除了子查询里的
DISTINCT,因为GROUP BY staffNumber已经确保每个员工编号只返回一次,DISTINCT属于冗余操作。 - 通过
WHERE s.gender = 'm'(或提前过滤Staff表)实现男性员工的筛选,确保结果只包含符合性别要求的员工。
内容的提问来源于stack exchange,提问作者Dan Galvin
相关产品推荐
相关产品推荐

