Предположим, у меня есть одна таблица foo
с соответствующими столбцами flag
, date
и username
.
Я пытаюсь найти запрос PostgreSQL, который выполняет следующее:
Выбрать все строки, где ...
date
позже определенной даты
- и
flag = 0
- и НЕТ другой строки более поздней
date
и с flag = 1
для того же пользователя
... сгруппированы по username
.
Эта проблема - третье требование в списке выше. Я пытался построить запрос, используя подзапросы с EXCEPT
, WHERE NOT EXISTS
, WITH
и LATERAL
, но я всегда захожу в тупик, когда даты подзапросов должны сравниваться друг с другом, и я не могу ссылаться на них .
Возможно ли это в пределах одного оператора SQL?