{id, lot_id (FK TradeLot), status (character varying), created_at (timestamp with time zone)}
Нужно вывести список лотов, у которых последний статус == 'new'
последний статус это статус у которого created_at более актуальный
Можно решить с помощью row_number() over (partition by id) или через distinct on (id) Я, конечно, могу написать запрос, но лучше бы вы сами научились. Направление поиска дал.
странно, что статус не FK или enum https://sqlize.online/sql/psql15/8a04d4c2a0a3118017b66e988c9b4cdf/
Благодарю! статус как enum, но не нативный
Не проверял синтаксис но должно быть что-то типа SELECT * FROM (SELECT lot_id, first_value (status) OVER (PARTITION BY lot_id ORDER BY created_at DESC) AS last_status FROM TradeLotStatus) st WHERE last_status = 'new'
вот еще вариант https://sqlize.online/sql/psql15/ed219b7427a597378fc0f54421130ea0/
ЕАИСТ?
По-моему, результат неверный...
Обсуждают сегодня