peewee.ProgrammingError:列必须出现在GROUP BY子句中或用于聚合函数

时间:2018-05-24 05:21:02

标签: postgresql peewee flask-peewee

我正在尝试使用PostgreSQL后端在Peewee中编写一个查询,以返回每个州根据给定产品状态对的export_value导出的顶级产品。这是我现在的查询:

    subquery = (
        models.Trade.select(
            models.Trade.state.alias('state_1'),
            models.Trade.product.alias('product_1'),
            fn.SUM(models.Trade.export_value).alias("export_value_1")
        ).where(
            models.Trade.origin_country == origin_country,
            models.Trade.year == year
        ).group_by(
            models.Trade.state,
            models.Trade.product
        ).alias("subquery")
    )

    query = (
        models.Trade.select(
            models.Trade.state,
            models.Trade.product,
            fn.MAX(subquery.c.export_value_1).alias("export_value")
        ).join(
            subquery, on=(
                (models.Trade.state == subquery.c.state_1) &
                (models.Trade.product == subquery.c.product_1)
            )
        ).group_by(
            models.Trade.state
        )
    )

运行此查询时出错,因为我没有在GROUP BY或聚合器中使用models.Trade.product。我是Peewee的新手,想了解如何通过修改此查询或通过其他查询来完成我想要的任何提示。

0 个答案:

没有答案