Django丨聚合与分组查询

多表实例


聚合查询

聚合查询函数时对一组值执行计算,并返回单个值

Django使用聚合查询前要先从django.db.models引用Avg、Max、Min、Count、Sum(首字母大写)

from django.db.models import Avg, Max, Min, Count, Sum  #   引入函数

聚合查询返回值的数据类型是字典。

聚合函数aggregate()是QuerySet的一个终止子句,生成的一个汇总值,相当于count()。

使用aggregate()后,数据类型就变为字典,不能再使用QuerySet数据类型的一些API了。

返回的字典中:键的名称默认是(属性名称加上__聚合函数名),值是计算出来的聚合值

要自定义返回字典的键的名称,可以起别名:

aggregate(别名 = 聚合函数名("属性名称"))

实例

  • 计算所有图书的平均价格
from django.db.models import Avg, Max, Min, Count, Sum  #   引入函数
...
res = models.Book.objects.aggregate(Avg("price"))
print(res, type(res))
...


##### 输出 #####
{
   'price_avg': Decimal('200.000000')} <class 'dict'>
  • 计算所有图书的数量,最贵价格和最便宜价格
res=models.Book.objects.aggregate(c=Count("id"),max=Max("price"),m

你可能感兴趣的:(django)