postgresql - peewee.ProgrammingError:列必须出现在 GROUP BY 子句中或在聚合函数中使用
问题描述
我正在尝试使用 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 的新手,想知道如何通过修改此查询或通过其他查询来完成我想要的任何提示。
解决方案
推荐阅读
- python - Python Django - change_view() 缺少 1 个必需的位置参数:'object_id'
- c# - 不显示 ComboBox 中的最后一项
- html - HTML表格问题:静态宽度与显示:块和variuos文本长度
- javascript - 尝试在 opencv.js 中使用 goodFeaturesToTrack
- c++ - 计算线程运行时间的正确方法是什么?
- python - 在优先级队列中附加一个自构造类会给出 TypeError: '<' not supported between 'str' 和 'Node' 的实例
- arrays - 用于重复数组元素的 Rust 宏
- sql - SQL ORACLE:是否可以将带有 CHAR(varchar2 数据类型)的 NUMBER 转换为 NUMBER 数据类型
- c++ - 用c ++编写二进制文件时如何设置精度?
- c# - 如何在 Xamarin 中创建图形?