Zdá se, že toužíte po DISTINCT ON ... ORDER BY
idiom v Postgresql pro výběr největší-n -na skupinu
výsledky (N =1 ). Takže místo seskupování a agregace jen
event_list = Table.query.\
distinct(Table.name).\
filter_by(**filter_by_query).\
filter(*queries).\
order_by(Table.name, Table.timestamp.desc()).\
all()
To skončí výběrem řádků „seskupených“ podle názvu s nejvyšší hodnotou časového razítka.
Většinu času nechcete používat hvězdičku, stejně ne v kódu aplikace, pokud neprovádíte manuální ad-hoc dotazy. Hvězdička je v podstatě "všechny sloupce z FROM
tabulka/vztah“, což by mohlo později narušit vaše předpoklady, pokud přidáte sloupce, změníte jejich pořadí a podobně.
V případě, že byste chtěli výsledné řádky seřadit podle časového razítka v konečném výsledku, můžete použít například Query.from_self()
převést dotaz na poddotaz a objednat v přiloženém dotazu:
event_list = Table.query.\
distinct(Table.name).\
filter_by(**filter_by_query).\
filter(*queries).\
order_by(Table.name, Table.timestamp.desc()).\
from_self().\
order_by(Table.timestamp.desc()).\
all()