gpt4 book ai didi

django - Django 2.0 中的 “greatest-n-per-group” 查询?

转载 作者:行者123 更新时间:2023-12-03 10:12:27 25 4
gpt4 key购买 nike

基本上,我想做this但是使用 django 2.0。

如果我尝试:
Purchases.objects.filter(.....).annotate(my_max=Window(
expression=Max('field_of_interest'),
partition_by=F('customer')
)
)

我取回所有行,但使用 my_max添加到每个记录的属性。

最佳答案

如果您使用的是 PostgreSQL:

Purchases.objects.filter(.....).order_by(
'customer', '-field_of_interest'
).distinct('customer')

更新:过滤器中不允许使用窗口表达式,因此以下方法不起作用。请引用this answer获取最新解决方案

或与 Window表达
Purchases.objects.filter(.....).annotate(my_max=Window(
expression=Max('field_of_interest'),
partition_by=F('customer')
)
).filter(my_max=F('field_of_interest'))

但如果他们具有相同的 field_of_interest,后者可以为每个客户生成多行

另一个 Window , 每个客户单排
Purchases.objects.filter(.....).annotate(row_number=Window(
expression=RowNumber(),
partition_by=F('customer'),
order_by=F('field_of_interest').desc()
)
).filter(row_number=1)

关于django - Django 2.0 中的 “greatest-n-per-group” 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51140307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com