我有模型,
class ModelA(models.Model):
device_id = models.IntegerField()
deal_sent = ArrayField(models.IntegerField)
对于给定的 device_id,我们可以有一个重复的 deal_sent 列表。例如:- 考虑下表
device_id deals_sent
1 [4,5,1]
2 [1,2,3,4,2,3,4,3,4,5,1]
3 [1,4,2,3,4,3,4,5,1]
4 [1,4,3,4,5,1]
5 [4,5]
6 [1,3,4,2,3,4,3,4,5,1]
我想获得 top N device_id
,他们1
在deal_sent
ArrayField 中的计数最少。例如:- 如果我想要前 2 个 device_id 的1
in最少deals_sent
,那么 device_id1
和5
将被返回,因为 in 的计数1
在device_id和deals_sent
中最少。1
5
我已经关注了这个问题,这似乎是我所期待的一个接近的解决方案。
with elements (element) as (
select unnest(ARRAY['a','b','c','a','a'])
)
select count(*)
from elements
where element = 'a';
如何将上述查询转换为 DjangoORM 查询?或者在不在应用程序级别使用 for 循环的情况下,数据库级别本身的替代完美查询有什么用?