聚合查询分为:
(1)整表聚合:将全部数据进行集中统计查询
语法:model类名.objects.aggregate(结果变量名=聚合函数('列名'))
返回结果:结果变量名和值组成的字典(dict)
代码如下:
aggregate = Book.objects.aggregate(res=Count('pub'))
print(type(aggregate))
print(aggregate)
运行结果如下:
(2)分组聚合
分组聚合语法:
QuerySet.annotate(结果变量名=聚合函数('字段名'))
返回值类型:QuerySet
步骤:先查找要分组聚合的列的数据集,model类名.objects.values('列名','列名',...),再
通过返回结果(类型是QuerySet)调用annotate方法分组聚合得到分组结果
代码如下:
queryset_pub = Book.objects.values('pub')
print(queryset_pub)
pub__filter = queryset_pub.annotate(res=Count('pub')).filter(res__gt=1)
print(pub__filter.query)
print(pub__filter)
运行结果如下: