我现在面临的问题与在多行中查找记录字段的频率有关。
例如,假设有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'),...)
有没有内置的方式来处理这种情况?任何帮助都将不胜感激。
答案 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'))