本博客前文链接,点击查看,便于理解代码的来龙去脉

聚合函数
MAX() MIN() COUNT() SUM() AVG()

from stu.models import *def showsql():from django.db import connectionprint connection.queries[-1]['sql']#求最高成绩from django.db.models import Max
Stu.objects.aggregate(Max('score'))
{'score__max': 99}showsql()
SELECT MAX(`t_stu`.`score`) AS `score__max` FROM `t_stu`#求最低成绩from django.db.models import Min
Stu.objects.aggregate(m=Min('score'))
{'m': 66}showsql()
SELECT MIN(`t_stu`.`score`) AS `m` FROM `t_stu`#学生总人数from django.db.models import Count
Stu.objects.aggregate(c=Count('sno'))
{'c': 5}
showsql()
SELECT COUNT(`t_stu`.`sno`) AS `c` FROM `t_stu`#求总成绩from django.db.models import Sum
Stu.objects.aggregate(s=Sum('score'))
{'s': 432}
showsql()
SELECT SUM(`t_stu`.`score`) AS `s` FROM `t_stu`#求平均成绩from django.db.models import Avg
Stu.objects.aggregate(a=Avg('score'))
{'a': 86.4}
showsql()
SELECT AVG(`t_stu`.`score`) AS `a` FROM `t_stu`

Group By

分组聚合函数

[ max() min() count() sum() avg() ]
准备


```python
from student.models import *
from django.db.models import *  def showsql():from django.db import connectionprint connection.queries[-1]['sql']
Stu.objects.annotate(c=Count('sno'))
<QuerySet [<Stu: Stu:zhangsan,88>, <Stu: Stu:lisi,90>, <Stu: Stu:wangwu,99>, <Stu: Stu:zhangjie,66>, <Stu: Stu:xiena,89>]>showsql()
SELECT `t_stu`.`sno`, `t_stu`.`sname`, `t_stu`.`score`, `t_stu`.`created`, `t_stu`.`clazz_id`, COUNT(`t_stu`.`sno`) AS `c` FROM `t_stu` GROUP BY `t_stu`.`sno` ORDER BY NULL LIMIT 21Stu.objects.annotate(a=Avg('clazz'))
<QuerySet [<Stu: Stu:zhangsan,88>, <Stu: Stu:lisi,90>, <Stu: Stu:wangwu,99>, <Stu: Stu:zhangjie,66>, <Stu: Stu:xiena,89>]>showsql()
SELECT `t_stu`.`sno`, `t_stu`.`sname`, `t_stu`.`score`, `t_stu`.`created`, `t_stu`.`clazz_id`, AVG(`t_stu`.`clazz_id`) AS `a` FROM `t_stu` GROUP BY `t_stu`.`sno` ORDER BY NULL LIMIT 21#求每个班学生的总成绩Stu.objects.values('clazz').annotate(s=Sum('score'))
<QuerySet [{'s': 154, 'clazz': 1L}, {'s': 90, 'clazz': 2L}, {'s': 188, 'clazz': 3L}]>
showsql()
SELECT `t_stu`.`clazz_id`, SUM(`t_stu`.`score`) AS `s` FROM `t_stu` GROUP BY `t_stu`.`clazz_id` ORDER BY NULL LIMIT 21# 求每个班级的学生人数Stu.objects.values('clazz').annotate(c=Count('sno'))
<QuerySet [{'c': 2, 'clazz': 1L}, {'c': 1, 'clazz': 2L}, {'c': 2, 'clazz': 3L}]>showsql()
SELECT `t_stu`.`clazz_id`, COUNT(`t_stu`.`sno`) AS `c` FROM `t_stu` GROUP BY `t_stu`.`clazz_id` ORDER BY NULL LIMIT 21# 求每个班级的学生平均成绩Stu.objects.values('clazz').annotate(a=Avg('score'))
<QuerySet [{'a': 77.0, 'clazz': 1L}, {'a': 90.0, 'clazz': 2L}, {'a': 94.0, 'clazz': 3L}]>showsql()
SELECT `t_stu`.`clazz_id`, AVG(`t_stu`.`score`) AS `a` FROM `t_stu` GROUP BY `t_stu`.`clazz_id` ORDER BY NULL LIMIT 21

子查询

Stu.objects.values('clazz').annotate(s=Sum('score')).aggregate(m=Max('s'))
{'m': 188}showsql()
SELECT MAX(`s`) FROM (SELECT `t_stu`.`clazz_id` AS Col1, SUM(`t_stu`.`score`) AS `s` FROM `t_stu` GROUP BY `t_stu`.`clazz_id` ORDER BY NULL) subquery

关联查询

Stu.objects.values('clazz__cname')
<QuerySet [{'clazz__cname': u'HTML5'}, {'clazz__cname': u'HTML5'}, {'clazz__cname': u'MySQL'}, {'clazz__cname': u'Python'}, {'clazz__cname': u'Python'}]>showsql()
SELECT `t_cls`.`cname` FROM `t_stu` INNER JOIN `t_cls` ON (`t_stu`.`clazz_id` = `t_cls`.`cno`) LIMIT 21

聚合函数/分组聚合查询相关推荐

  1. django 中的聚合和分组 F查询 Q查询 事务cookies和sessions 066

    django 中的聚合和分组 F查询 Q查询 事务cookies和sessions 066 1 聚合和分组 聚合:对一些数据进行整理分析 进而得到结果(mysql中的聚合函数) 1aggregate( ...

  2. MySql基础篇---002 SQL之SELECT使用篇: 基本的SELECT语句,运算符,排序与分页,多表查询,单行函数,聚合函数,子查询

    第03章_基本的SELECT语句 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 1. SQL概述 1.1 SQL背景知识 1946 年,世界上第一台电脑 ...

  3. MYSQL —(二)筛选、聚合和分组、查询

    MYSQL -(二)筛选.聚合和分组.查询 虚拟机清屏:Ctrl+l 筛选条件 比较运算符 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e9UNlksr-158046 ...

  4. elasticsearch(7)聚合统计-分组聚合

    原文:https://blog.csdn.net/sz85850597/article/details/82858831 elasticsearch(7)聚合统计-分组聚合 2018年09月26日 2 ...

  5. 数据库MySQL基础---约束、表关系、聚合函数、连接查询、分组查询和子查询

    约束 1.主键约束亦成为主码,关键字:primary key,设置了主键约束的列的数据要求:不能为空,不允许重复. 2.自增长策略针对主键,不需要手动给值,自动的值是当前表中该列最大值+1关键字:au ...

  6. mysql 连边聚合_MySQL分组,聚合函数,连表查询,子查询

    >>>分组: group by + group_concat 分组:类似于将一个班级的学生,按照性别或其他条件,分成若干个组,最终以小组为单位显示,如上图中,以post字段对表进行分 ...

  7. tp5使用sum()聚合函数分组查询

    数据查询出来大概是这个样子(实际应用中会很复杂,这里造一些类似的数据,用来举例说明) 简单的查询 $data = Db::name('order')->field('sum(money) as ...

  8. MySQL数据库——day26 数据库安装,卸载,概念,msq的介绍,安装,连接,DDL,DML,DQL模糊查询,字段控制(别名和运算),排序,聚合函数,分组查询(where和having),分页查询

    学到mysql的时候非常的快,感觉前面的没有很巩固,还是要复习前面的博客 常见的数据库 MySQL , Oracle , SQL Server , SQLite , DB2 , - SQL Serve ...

  9. 【数据库】第二章 基础函数、聚合函数、条件查询、子查询和多表查询

    [数据库]第二章 基础函数.条件查询.聚合函数.多表查询和子查询 文章目录 [数据库]第二章 基础函数.条件查询.聚合函数.多表查询和子查询 一.基础函数 二.聚合函数 1.COUNT 2.MAX/M ...

最新文章

  1. 视觉SLAM前端特征检测与跟踪的思考
  2. Selenium 1.0的历史及工作原理
  3. python学习_19
  4. 程序员面试题精选100题(44)-数值的整数次方[算法]
  5. 10-Armv8-A memory model guide
  6. 【tensorflow】 GPU 显存分配设置
  7. 基于CDS view生成的OData服务的metadata是如何加载的
  8. C++ 学习之旅(2)——链接器Linker
  9. python的高级特性3:神奇的__call__与返回函数
  10. Fedora 25-64位操作系统中安装配置Hyperledger Fabric过程
  11. matlab显示图像只有一半,我去噪后图像为什么只显示一半
  12. 你了解你的大脑吗?来看看脑科学如何诠释。
  13. UnityShader[1]光照模型
  14. 漏洞补丁:windwos补丁下载(MS17-010)
  15. 三种免费批量下载QQ空间相册方法-2018.05.20亲测有效
  16. rpc服务器不可用处于启用状态,电脑提示RPC服务器不可用怎么办?
  17. 绘制地图其实并不难!如何绘制地图?看看Smartbi的制作方法
  18. ML Hyperlink
  19. 金融工程中的蒙特卡罗方法
  20. 从新手到Flutter架构师,一篇就够!这原因我服了

热门文章

  1. mysql_d58_ 主键_外键_自增_索引_一对一_多对多_limit_分组_连表操作
  2. 二哥的小破站终于上线了,颜值贼高
  3. C语言试卷选择判断题(7)
  4. 使用GetData Graph Digitizer,没有坐标界面出现。
  5. 5G精华问答 | 5G与LTE有什么关系?
  6. 大牧絮叨设计模式:单例模式
  7. 量产24V 开关电源 明纬350W/24V电源方案 明纬电源电路图
  8. 【集合论】划分 ( 划分 | 划分示例 | 划分与等价关系 )
  9. 素拓网站部署经验分享
  10. IRIS镜像配置(3)