2

我有以下查询

reports = self.session.query((
        func.sum(Report.a) / func.sum(Report.b))
            .label('c'),
        Report.id,
        Report.id2
        ).group_by(Report.id, Report.id2
        )

我现在想获取按 id 分组的报告的 max(c)。

本质上,我试图为这个问题提供一个 sqlalchemy 解决方案 SQL Select only rows with Max Value on a Column

但是有额外的要求,我需要计算值列,我想在 mysql 中从计算列中选择最大值

我发现很难执行

SELECT MAX(C), id FROM (SELECT A/B AS C, id FROM TABLE) t
4

1 回答 1

2

将您的第一个查询标记为子查询

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)
于 2013-09-26T18:04:26.770 回答