我正试图用peewee和mysql数据库编写一个查询来返回顶部 product
由每个 state
基于 export_value
对于给定的产品状态对。我想知道实现这一点的最佳sql查询是什么。下面是我关心的表的模式:
Trade
- product (varchar)
- state (varchar)
- export_value (numeric)
...
我需要选择的字段包括: state
, product
,和 total_export_value
.
关于如何设计这个查询有什么指导吗?如果可能的话,还要谈谈如何把它翻译成peewee(我对它很陌生)。
编辑:
以下是我尝试过的peewee查询:
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 == args["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
)
)
它不能满足我的需要,因为mysql没有选择合适的 product
,但是 state
以及 total_export_value
你选的很好。我怀疑这是因为它连接两个查询的方式 product
的组中未使用 query
.
暂无答案!
目前还没有任何答案,快来回答吧!