我有以下查询
reports = self.session.query((
func.sum(Report.a) / func.sum(Report.b))
.label('c'),
Report.id,
Report.id2
).group_by(Report.id, Report.id2
)
我现在想要获得报告的最大值(c),按ID分组。
基本上,我正在尝试使用sqlalchemy解决此问题 SQL Select only rows with Max Value on a Column
但有额外要求我需要计算值列,我希望最大值为Selecting max value from calculated column in mysql
我发现很难执行
SELECT MAX(C), id FROM (SELECT A/B AS C, id FROM TABLE) t
答案 0 :(得分:2)
将您的第一个查询标记为subquery:
reports = session.query(
(func.sum(Report.a) / func.sum(Report.b)).label('c'),
Report.id,
Report.id2
).group_by(Report.id, Report.id2).subquery()
在此之后,它可以在另一个查询中使用,就好像它是一个表:
# reports.c is a shorthand for reports.columns
q = session.query(
func.max(reports.c.c),
reports.c.id
).group_by(reports.c.id)