17、Django-聚合查询-原生sql语句操作raw()
聚合查询:整表聚合和分组聚合
1、整表聚合
-- 不带分组的聚合查询是指:将全部数据进行集中统计查询
-- 需要导入:
-- from django.db.models import *
-- 聚合函数:Sum,Avg,Count,Max,Min
-- 语法:
-- <model_name>.objects.aggregate(结果变量名=聚合函数('字段名')) --结果变量名 相当于 as 别名
-- 返回:结果变量名和值组成的字典
-- {"结果变量名": 值}
2、分组聚合
分组聚合:指通过计算查询结果中每一个对象所关联的对象集合、从而得出总计值(也可以是平均值或总和)、即为查询集的每一项生成聚合
-- 语法:
-- QuerySet.annotate(结果变量名=聚合函数('字段名') )
-- 返回:QuerySet对象
如:
-- 先查:bs = Book.objects.values('pub')
-- 再分组:bs.annotate(res=Count('id')) --统计
原生数据库操作-只能做查询
使用游标:cursor