gpt4 book ai didi

python - 如何在 Django 中使用 GROUP BY 计数(*)

转载 作者:太空宇宙 更新时间:2023-11-04 08:12:10 28 4
gpt4 key购买 nike

我想在 Django QuerySet 中执行与以下查询等效的操作:

SELECT address, city, state, zip, COUNT(*)
FROM entries
GROUP BY address, city, state, zip
HAVING COUNT(*) > 5

不幸的是,Django 的 Count() 聚合函数需要一个字段,但我没有计算任何一个单独的字段。另外,我不能将“*”用作字段。

是使用 .raw() 执行此操作的唯一方法吗?

最佳答案

实际上,尽管 count() 在一般情况下是正确的,但它不适用于 GROUP BY - 它返回单个值。这种情况最好通过以下方式处理:

qs = Entries.objects.values('address', 'city', 'state', 'zip').annotate(entry_count=Count('id'))

这应该计算 ID 的数量,因此计算每个组中唯一行的数量。

对于 having 部分,对注解进行过滤即可:

qs = qs.filter(entry_count__gt=5)

关于python - 如何在 Django 中使用 GROUP BY 计数(*),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20406028/

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