我正在尝试使用 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
)
)
运行此查询时出现错误,因为我没有models.Trade.product
在 GROUP BY 或聚合器中使用 。我是 Peewee 的新手,想知道如何通过修改此查询或通过其他查询来完成我想要的任何提示。