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