相关疑难解决方法(0)

选择每个GROUP BY组中的第一行?

正如标题所示,我想选择用a组成的每组行的第一行GROUP BY.

具体来说,如果我有一个purchases看起来像这样的表:

SELECT * FROM purchases;
Run Code Online (Sandbox Code Playgroud)

我的输出:

id | customer | total
---+----------+------
 1 | Joe      | 5
 2 | Sally    | 3
 3 | Joe      | 2
 4 | Sally    | 1

我想查询每个产品id的最大购买量(total)customer.像这样的东西:

SELECT FIRST(id), customer, FIRST(total)
FROM  purchases
GROUP BY customer
ORDER BY total DESC;
Run Code Online (Sandbox Code Playgroud)

预期产出:

FIRST(id) | customer | FIRST(total)
----------+----------+-------------
        1 | Joe      | 5
        2 | Sally    | 3

sql sqlite postgresql group-by greatest-n-per-group

1205
推荐指数
16
解决办法
95万
查看次数

Django使用ORM选择每组前n条记录

按照这个问题,我试图获取每个 group_by 标准的前 10 条记录,但 Django 返回此错误:

from django.db.models import F, Window
from django.db.models.functions import RowNumber

Purchases.objects.annotate(row_number=Window(
        expression=RowNumber(),
        partition_by=F('customer'),
        order_by=F('field_of_interest').desc()
        )
    ).filter(row_number=10)
Run Code Online (Sandbox Code Playgroud)
raise NotSupportedError(
django.db.utils.NotSupportedError: Window is disallowed in the filter clause.
Run Code Online (Sandbox Code Playgroud)

当我删除 .desc() 时,错误消息更改为:

ValueError: order_by must be either an Expression or a sequence of expressions.
Run Code Online (Sandbox Code Playgroud)

我正在使用 PostgreSql。这是一个错误还是我在查询中的某个地方错了?

python django postgresql

2
推荐指数
1
解决办法
1652
查看次数