Если мне нужно проверить, все ли экземпляры кортежа верны, и вернуть значения тех, с которых мне следует начать?
Вопрос просит меня найти всех менеджеров в этой конкретной компании, которые работали совсем недавно, чем ВСЕ их подчиненные сотрудники. st_name - это имя человека, st_hiredate - когда они были наняты, а st_possition - если они менеджер, помощник или руководитель.
Когда я запускаю приведенный ниже запрос, я правильно получаю все кортежи, которые мне нужны для сравнения, но я не могу запустить его, чтобы получить кортежи всех менеджеров, которые были наняты после ВСЕХ их младших сотрудников.
Могу ли я использовать условие, которое гласит, что если все экземпляры имени сотрудника не совпадают со всеми экземплярами даты их найма до того, как их младший персонал не вернет свое имя?
SELECT a.st_name, a.st_hiredate, b.st_name, b.st_hiredate
FROM (SELECT st_name, st_hiredate, st_position FROM staff WHERE st_position = 'assistant' OR st_position = 'Supervisor') as b JOIN (SELECT st_name, st_hiredate, st_position FROM staff WHERE st_position = 'manager') as a;
Есть 17 сотрудников, 6 из которых являются менеджерами и 11 из которых нет. Когда я запускаю приведенный выше запрос, он возвращает 66 кортежей, что означает, что я точно сравниваю каждого менеджера с каждым из его подчиненных. Теперь, как я могу заявить, что он должен быть больше, чем любой другой подчиненный сотрудник?
1 ответ
Попробуйте этот тип запроса, не совсем уверенный в синтаксисе. Просто поймите идею.
SELECT * FROM Staff
WHERE st_position='manager'
AND
st_hireDate >(SELECT max(st_hireDate) FROM
Staff WHERE st_position='Supervisor' OR st_position='assistant' )