Мне нужно выбрать источник Last-Non Direct… который оплачивается в этом примере (сеанс 3).
В Postgres вы должны использовать:
select t.*
from t
where Source <> 'direct'
order by session_number desc
limit 1;
Вместо limit
вы также можете использовать:
fetch first 1 row only
Если вам не нужна фильтрация, вы можете использовать:
select t.*
from t
where Source <> 'direct'
order by (source = 'direct') asc, -- put last
session_number desc
limit 1;
Или, если хотите номер сеанса, можно использовать условное агрегирование:
select coalesce( max(session_number) filter (where source <> 'direct'),
max(session_number)
from t;