Выборка последних по дате изменения уникальных записей PostgreSQL/RoR

Имеется необходимость в запросе, который будет возвращать от модели 2 поля post и role. Подстрока для поиска приходит с фронта, записи с вхождением этой подстроки отсеять по уникальности и вернуть последнее по дате изменения. Реально ли это всё осуществить в пределах одного запроса? Пример записей в гугл-таблицах

То есть при вхождении подстроки "начальник 1" вернуть должно 4 и 5 записи При вхождении "ачаль" вернуть 3, 4, 5, 6, 7, 13 записи

Пробовал покурить вложенные запросы SELECT но моих познаний пока не хватает для построения рабочих конструкций.


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

Автор решения: Василиса

Тут не нужен вложенный запрос, можно воспользоваться DISTINCT ON вместе с ORDER, чтобы получить уникальные записи

Model.select("DISTINCT ON(models.post) models.id, models.post, models.role")
     .where('models.post ILIKE ?', "%#{search_term}%").order(updated_at: :desc)
→ Ссылка