foo_max_time_q = select([func.max(Foo.time).label('foo_max_time'), Foo.id.
    label('foo_id')]).group_by(Foo.id).alias('foo_max_time_q')
foo_q = session.query(Foo.id.label('foo_id'), Foo.version.label(
    'foo_version'), Foo.revision.label('foo_revision'), foo_max_time_q.c.
    foo_max_time.label('foo_max_time')).join(foo_max_time_q, foo_max_time_q
    .c.foo_id == Foo.id)
Sqlalchemy: подзапрос в FROM должен иметь псевдоним