peewee.ProgrammingError: столбец должен появляться в предложении GROUP BY или использоваться в статистической функции - PullRequest
0 голосов
/ 24 мая 2018

Я пытаюсь написать запрос в Peewee с бэкэндом PostgreSQL, чтобы вернуть топовый продукт, экспортируемый каждым состоянием на основе 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 и хотел бы получить советы о том, как я могу добиться того, чего я хочу, либо изменив этот запрос, либо с помощью другого запроса.

...