SQL Исключить вывод где есть значения больше определенной даты

Дана таблица

введите сюда описание изображения

Необходимо найти все name, где в таблице отсутствуют записи date большее 2021-03-01 00:00

Вывести должен только nane = '12', тк для 10 и 11 присутствуют записи больше 2021-03-01 00:00


Ответы (2 шт):

Автор решения: Slava Rozhnev

Используем конструкцию WHERE NOT EXISTS

select name 
from tbl 
where not exists (
  select name from tbl tmp 
  where tmp.date > '2021-03-01 00:00' and tmp.name = tbl.name 
);

Test SQL online

select tbl.name 
from tbl 
left join tbl tmp on tmp.date > '2021-03-01 00:00' and tmp.name = tbl.name 
where tmp.name is null;
→ Ссылка
Автор решения: Герман Борисов
select name
from table1
group by name
having max(date) <= '2021-03-01 00:00'

Для каждого имени находим максимальную дату, и выкидываем те, у кого она больше заданной

→ Ссылка