Python Sqlalchemy ORM在一条语句中按两次/子查询分组

Python Sqlalchemy ORM在一条语句中按两次/子查询分组,python,sqlalchemy,orm,Python,Sqlalchemy,Orm,我尝试将以下SQL语句转换为sqlalchemy ORM查询: select name, max(pnl) from ( select name, filedate, sum(pnl) as pnl from portfolio where filedate>="2020-01-01" group by filedate, name ) maxg group by name 我似乎无法将其转换为ORM查

我尝试将以下SQL语句转换为sqlalchemy ORM查询:

select name, max(pnl) from 
    (
       select name, filedate, sum(pnl) as pnl from portfolio 
       where filedate>="2020-01-01" 
       group by filedate, name
    ) maxg 
group by name
我似乎无法将其转换为ORM查询,这是我迄今为止尝试过的,构建内部子查询,但我似乎无法为外部查询构建ORM查询。是否有办法为内部子查询别名,以便我可以继续引用字段

from sqlalchemy import func

session.query(
    Entity.name, Entity.filedate, func.sum(Entity.pnl).label("pnl"))
       .filter(Entity.filedate >= datetime.date(2020,1,1))
       .group_by(Entity.filedate, Entity.name)
)

如果有人有同样的问题,这为我解决了这个问题,尽管这是一个丑陋的实现。可以使用
subquery()
创建子查询,并通过
subquery.c.{columnname}

# Subquery
sq = session.query(
    Entity.name, Entity.filedate, func.sum(Entity.pnl).label("pnl"))
       .filter(Entity.filedate >= datetime.date(2020,1,1))
       .group_by(Entity.filedate, Entity.name)
).subquery()

session.query(sq.c.name, func.max(sq.c.pnl))
    .group_by(sq.c.name).all()