聚合查询与分组查询
聚合查询:
aggregate(*args, **kwargs)
#1.聚合 aggregate:返回值是一个字典 from django.db.models import Avg,Max,Min,Count #问题:查询所有书籍的平均价格,最高价格,最低价格 ret = Book.objects.all().aggregate(avg_price=Avg('price'),max_price = Max('price'),min_price=Min('price')) print(ret)
aggregate()是QuerySet 的一个终止子句,意思是说,它返回一个包含一些键值对的字典。键的名称是聚合值的标识符,值是计算出来的聚合值。键的名称是按照字段和聚合函数的名称自动生成出来的。如果你想要为聚合值指定一个名称,可以向聚合子句提供它。
分组查询 :
查询每个部门的的平均薪资
#************************************************聚合与分组查询***************************************************** #----------------------聚合 aggregate:返回值是一个字典-------------------------- from django.db.models import Avg,Max,Min,Count # --------------------分组 annotate 返回的是一个queryset----------------------------- #查询每个部门的平均薪资 #sql:SELECT dep AS 部门, AVG(salary) AS 平均薪资 FROM app01_emp GROUP BY dep; #ORM ret=emp1.objects.values('dep').annotate(平均薪资=Avg('salary')) print(ret)
单表分组查询语法总结:
表单模型.objects.values("group by 分组字段").annotate(聚合函数('聚合字段'))