Извините за длинное название, но я хотел объяснить ситуацию.
Мои мозги почти взрываются. Я пробовал это уже пять часов, и я не понимаю. Просто сильно разболелась голова.
Я хочу получить тех сотрудников, у которых зарплата меньше, чем у любого из тех, кто продал один или несколько заказов. Есть две таблицы EMPLOYEES
и ORDERS
.
EMPLOYEES
есть эти столбцы; Имя, Фамилия, Номер социального страхования, Зарплата.
ORDERS
есть эти столбцы; Номер социального страхования, OrderID
Это лучшее решение на данный момент.
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 -> 1, он печатает всех сотрудников, у которых есть один или меньше заказов.