如何在多行中查找记录字段的最大出现次数?

时间:2018-10-09 01:42:02

标签: python django

我现在面临的问题与在多行中查找记录字段的频率有关。

例如,假设有6条记录。

Zone     Camera    Ip
----     ------    --
Zone 1   Cam 1    192.16.....
Zone 2   Cam 2    192.16.....
Zone 4   Cam 3    192.16.....
Zone 2   Cam 4    192.16.....
Zone 2   Cam 5    192.16.....
Zone 3   Cam 6    192.16.....

在这里我们要查找“区域的最大频率”,或者在记录中最频繁的区域是什么? (通常,我们可以看到2区发生了3次,这是最频繁的区域)

我使用了聚合函数来找到最大值,但是那样行不通,因为它只返回字段的最大值pk。

我尝试的失败示例:

qs.aggregate(most_frequent_zone=Max('Zone'),...)

有没有内置的方式来处理这种情况?任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

您可以通过 group by 操作以及 聚合

来获得结果
from django.db.models import Count, Max

qs.values('Zone').annotate(zone_count=Count('Zone')).aggregate(most_frequent_zone=Max('zone_count'))