01.aggregate聚合函数
- **作用:**从数据库中取出一个汇总的集合
aggregate求最大值、最小值、平局值等
from django.db.models import Count,Avg,Max,Sum
def orm(request):
stus = models.Student.objects.aggregate(
stu_num=Count('age'),
stu_avg=Avg('age'),
stu_max=Max('age'),
stu_sum=Sum('age'))
print('stu',stus)
return HttpResponse('ok')
02.annotate实现聚合group by查询
- **作用:**对查询结果进行分组,比如分组求出各年龄段的人数
- 注: annotate后面加filter过滤相当于原生sql语句中的having
from django.db.models import Count, Avg, Max, Min, Sum
def orm(request):
stus1 = models.Student.objects.values('age').annotate(stu_num=Count('age'))
stus2 = models.Student.objects.values('age').annotate(stu_num=Count('age')).filter(age__gt=22)
stus3 = models.Student.objects.values('age').annotate(stu_Avg=Avg('grade'))
return HttpResponse('ok')
03.aggregate和annotate区别
-
- Aggregate作用是从数据库取出一个汇总的数据(比如,数量,最大,最小,平均等)
-
- 而annotate是先按照设定的条件对数据进行分组,然后根据不同组分别对数据进行汇总