mysql-每个州基于单个export\u值之和导出的顶级产品

3df52oht  于 2021-06-23  发布在  Mysql
关注(0)|答案(0)|浏览(231)

我正试图用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 .

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题