Stack Overflow на русском Asked by DogeDev on December 11, 2021
В бд есть записи результатов бегунов.
Таблица Results имеет поля athlete_id (id спортсмена), created_at (дата/время создания записи), time (результат забега). У каждого бегуна может быть несколько записей результатов.
Как сделать выборку результатов всех бегунов, чтобы в нее попали только последние созданные записи каждого бегуна?
Если у вас PostgreSQL, то задачка легко решается через DISTINCT ON
Result.select('DISTINCT ON (athlete_id) *').order(created_at: :desc)
Из таблицы результатов будет взято по одной записи для каждого бегуна. Так как она отсортирована по created_at
, то будет взята самая последняя по времени
Answered by Василиса on December 11, 2021
можно попробовать сделать через подзапрос. Например так:
select distinct
res1.athlete_id,
(
select top 1
res2.time
from
Result as res2
where
res2.athlete_id = res1.athlete_id
order by
res2.created_at
) as last_time
from
Results as res1;
Answered by cauf on December 11, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP