没有合适的资源?快使用搜索试试~ 我知道了~
Django ORM – 多表实例(聚合与分组查询) 聚合查询(aggregate) 聚合查询函数是对一组值执行计算,并返回单个值。 Django 使用聚合查询前要先从 django.db.models 引入 Avg、Max、Min、Count、Sum(首字母大写)。 from django.db.models import Avg,Max,Min,Count,Sum # 引入函数 聚合查询返回值的数据类型是字典。 聚合函数 aggregate() 是 QuerySet 的一个终止子句, 生成的一个汇总值,相当于 count()。 使用 aggregate() 后,数据类型就变为字典
资源详情
资源评论
资源推荐
Django ORM – 多表实例(聚合与分组查询)多表实例(聚合与分组查询)
Django ORM – 多表实例(聚合与分组查询)多表实例(聚合与分组查询)
聚合查询(聚合查询(aggregate))
聚合查询函数是对一组值执行计算,并返回单个值。
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 了。
日期数据类型(DateField)可以用 Max 和 Min。
返回的字典中:键的名称默认是(属性名称加上__聚合函数名),值是计算出来的聚合值。
如果要自定义返回字典的键的名称,可以起别名:
aggregate(别名 = 聚合函数名("属性名称"))
计算所有图书的平均价格:
实例实例
from django.db.models import Avg,Max,Min,Count,Sum # 引入函数
...
res = models.Book.objects.aggregate(Avg("price"))
print(res, type(res))
...
计算所有图书的数量、最贵价格和最便宜价格:
实例实例
res=models.Book.objects.aggregate(c=Count("id"),max=Max("price"),min=Min("price"))
print(res,type(res)
分组查询(分组查询(annotate))
分组查询一般会用到聚合函数,所以使用前要先从 django.db.models 引入 Avg,Max,Min,Count,Sum(首字母大写)。
from django.db.models import Avg,Max,Min,Count,Sum # 引入函数
返回值:返回值:
分组后,用 values 取值,则返回值是 QuerySet 数据类型里面为一个个字典;
分组后,用 values_list 取值,则返回值是 QuerySet 数据类型里面为一个个元组。
MySQL 中的 limit 相当于 ORM 中的 QuerySet 数据类型的切片。
注意:注意:
annotate 里面放聚合函数。
values 或者或者 values_list 放在放在 annotate 前面:前面:values 或者 values_list 是声明以什么字段分组,annotate 执行分组。
values 或者或者 values_list 放在放在annotate后面:后面: annotate 表示直接以当前表的pk执行分组,values 或者 values_list 表示查询哪
些字段, 并且要将 annotate 里的聚合函数起别名,在 values 或者 values_list 里写其别名。
剩余14页未读,继续阅读
weixin_38653155
- 粉丝: 6
- 资源: 988
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0