django ORM系统中的聚合、分组查询以及Q(或)查询

一、聚合查询

如下图所示,这是一张学生表
django ORM系统中的聚合、分组查询以及Q(或)查询
求所有学生的平均年龄,如下图所示,查询结果为一个字典,可自定义字典的键名:
django ORM系统中的聚合、分组查询以及Q(或)查询
如果你希望生成不止一个聚合,你可以向aggregate()子句中添加多个参数。所以,如果你也想知道所有学生年龄的最大值和最小值,可以这样查询:
django ORM系统中的聚合、分组查询以及Q(或)查询

二、分组查询

案例:查询每个学院的学生人数各为多少
django ORM系统中的聚合、分组查询以及Q(或)查询
annotate可为调用的QuerySet中每一个对象都生成一个独立的统计值
django ORM系统中的聚合、分组查询以及Q(或)查询
分组不像聚合,聚合查询到的结果只有它聚合查询到的,而其它属性是访问不到的,而分组却可以访问到!

三、Q查询

案例:查询名字为‘bob’或者’mary’的学生
django ORM系统中的聚合、分组查询以及Q(或)查询
Q查询一般用在filter()中,可添加多个条件