sqlalchemy SELECT列FROM(SELECT列FROM TABLE)

时间:2013-09-26 00:07:12

标签: sqlalchemy

我有以下查询

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

1 个答案:

答案 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)