编写SQL查询:列出售出10辆以上车辆的男性员工姓名
修正售出10辆以上车辆的男性员工查询SQL语句
数据表结构
- Staff表:
staffNo(PK), fName, lname, gender, DOB, salary, intTelNo - CarPurchase表:
purchaseNo(PK), registrationNo(FK), customerNo(FK), amount, date, staffNo(FK)
原语句的错误点
- 字段名错误:
S.f.Name、S.l.Name是错误写法,对应表结构应为S.fName、S.lname - 连接语法错误:
InnerJoin需改为空格分隔的INNER JOIN;表名Car Purchase是错误的,正确表名为CarPurchase - 统计逻辑错误:
COUNT(DISTINCT P.staffNo)只会统计员工的唯一编号数,无法统计售出车辆数,应改为统计订单数(如COUNT(P.purchaseNo)) - 缺少分组子句:使用
HAVING必须配合GROUP BY,需按员工的唯一标识(主键staffNo)及姓名字段分组 - 引号错误:使用了中文引号
“Male”,需改为英文引号'Male'
修正后的SQL语句
SELECT S.fName, S.lname FROM Staff AS S INNER JOIN CarPurchase AS P ON S.staffNo = P.staffNo WHERE S.gender = 'Male' GROUP BY S.staffNo, S.fName, S.lname HAVING COUNT(P.purchaseNo) > 10;
补充说明
- 用
GROUP BY S.staffNo确保按单个员工分组,避免同名员工被错误合并 COUNT(P.purchaseNo)统计每个员工对应的订单数(即售出车辆数),因为每个purchaseNo对应一次车辆售出- 如果业务中存在同一订单对应多辆车的情况,可调整为
COUNT(DISTINCT P.registrationNo)来统计实际售出的车辆数量
内容的提问来源于stack exchange,提问作者Dr Strange
相关产品推荐
相关产品推荐

