【发布时间】:2020-03-31 14:19:58
【问题描述】:
抱歉,标题太长,但我想解释一下情况。
我的大脑快要爆炸了我已经尝试了五个小时,但我不明白。头疼得厉害。
我希望找到那些薪水低于任何已售出一个或多个订单的员工。有两个表EMPLOYEES 和ORDERS。
EMPLOYEES 有这些列;名字、姓氏、社会安全号码、薪水。
ORDERS 有这些列;社会保险号、订单号
这是迄今为止最好的解决方案。
SELECT H.SOCSECNUM, H.LASTNAME, H.FIRSTNAME, H.SALARY
FROM EMPLOYEES H
WHERE H.SALARY < ALL(SELECT COUNT(T.ORDERID)
FROM ORDERS T
WHERE H.SOCSECNUM = T.SOCSECNUM
HAVING COUNT(T.ORDERID) > 0
);
我理解这就像获取所有员工的社会保险号、姓名和薪水,这些员工的薪水低于任何销售超过 0 个订单的员工。
我是傻还是这有什么问题?现在这会打印所有有 0 个订单的员工。如果我更改 0 -> 1,它会打印所有拥有一个或更少订单的员工。
【问题讨论】:
-
在我看来,您是在将薪水与订单 ID 的数量进行比较。
-
请用您正在使用的数据库标记您的问题。
-
orders表会不会只有下单的ssn?