聚合查询:
聚合函数必须用在分组之后,没有分组其实默认整体就是一组
Max Min Sum Avg Count 1.分组的关键字是:aggretate
2.导入模块
from django.db.models import Max Min Sum Avg Count
温馨提示:只要跟数据库相关的功能,基本上都在django.db.models里面
如果不在,可能直接在django.db里面 1.筛选出价格最高的书籍
#聚合函数
from django.db.models import Max,Min,Sum,Count,Avg
#注意事项,聚合函数Max,Min,Sum,Count,Avg的首字母要大写,不然会报错 #1.筛选出价格最高的书籍
# res=models.Books.objects.aggregate(mr=Max('price'))
# print(res)
#结果:{'mr': Decimal('888.00')} #2.求书籍总价格
# res=models.Books.objects.aggregate(sm=Sum('price'))
# print(res)
#结果:{'sm': Decimal('2442.00')} # 3.求书籍的平均价格
# res=models.Books.objects.aggregate(av=Avg('price'))
# print(res)
#结果:{'av': 610.5} #4.一起使用
# res=models.Books.objects.aggregate(Max('price'),Sum('price'),Count('price'),Avg('price'))
# print(res)
#结果:{'price__max': Decimal('888.00'), 'price__sum': Decimal('2442.00'), 'price__count': 4, 'price__avg': 610.5} 分组查询: 什么时候需要分组
1.统计每一个部门的平均薪资
2.统计每一个部门的男女比例 1.关键字:annotate
2.导入模块
from django.db.models import Max Min Sum Avg Count django中models后面点什么,就按照什么分组 #1.统计每一本书的作者个数,书名,和对应的作者人数
# res=models.Book.objects.annotate(author_num=Count('authors__id')).values('title','author_num')
# print(res)
#结果:<QuerySet [{'title': '三国演义', 'author_num': 0}, {'title': '红楼梦', 'author_num': 2}, {'title': '水浒传', 'author_num': 0}, {'title': '西游记', 'author_num': 2}]> #2.统计每个出版社卖的最便宜的书的价格,出版社的名字,出版的最便宜的书
# res=models.Publish.objects.annotate(min_price=Min('book__price')).values('name','min_price')
# print(res)
#结果:<QuerySet [{'name': '东方出版社', 'min_price': Decimal('222.33')}, {'name': '北方出版社', 'min_price': Decimal('333.00')}]> #3.统计不止一个作者的图书
#分析步骤:
#1.先拿书和对应的作者数
#2.再筛选出作者数量大于1的图书,书名和作者数目
# res=models.Book.objects.annotate(author_num=Count('authors')).filter(author_num__gt=1).values('title','author_num')
# print(res)
#结果:<QuerySet [{'title': '红楼梦', 'author_num': 2}, {'title': '西游记', 'author_num': 2}]> #4.查询各个作者出的书的总价格,作者名字,总价格
# res=models.Author.objects.annotate(sum_price=Sum('book__price')).values('name','sum_price')
# print(res)
#结果:<QuerySet [{'name': 'jason', 'sum_price': Decimal('777.33')}, {'name': 'oscar', 'sum_price': Decimal('444.33')}, {'name': 'egon', 'sum_price': Decimal('333.00')}, {'name': 'dundun', 'sum_price': None}]>

最新文章

  1. 1、软件工程师要阅读的书籍 - IT软件人员书籍系列文章
  2. 在内网中OWA第一次访问速度慢的问题
  3. 退役?OR 继续
  4. MyEclipse从数据库反向生成实体类之Hibernate方式 反向工程
  5. 【CodeForces 611C】New Year and Domino
  6. Caught exception while loading file struts-default.xml 错误
  7. iOS,object-c传参c语言的二维数组
  8. 完美PNG半透明窗体解决方案
  9. struts2一个和多个文件上传及下载
  10. Iframe简单介绍(一)
  11. 通过数据绑定控制WPF动画启动,WPF动画开始
  12. WIN2008虚拟机安装ORACLE11g记录
  13. window.history.back(-1);与window.go(-1);的区别
  14. 记录日常Linux常用软件
  15. 1.为什么使用spring boot
  16. Announcing the Updated NGINX and NGINX Plus Plug‑In for New Relic (Version 2)
  17. 第三十五节,目标检测之YOLO算法详解
  18. ceph常用运维技巧总结1
  19. Python3基础 os.path.getsize 获得文件的大小
  20. Python 转义符

热门文章

  1. Ubuntu 16.04源码编译boost库 编写CMakeLists.txt | compile boost 1.66.0 from source on ubuntu 16.04
  2. Python 命令行之旅:深入 click 之子命令篇
  3. VLAN配置及Trunk接口配置
  4. Spring Boot2 系列教程(二十七)Nginx 极简扫盲入门
  5. Sql server中用现有表中的数据创建Sql的Insert插入语句
  6. 使用selenium模拟登陆新浪微博
  7. [ASP.NET Core 3框架揭秘] 配置[1]:读取配置数据[上篇]
  8. 程序员的算法课(18)-常用的图算法:广度优先(BFS)
  9. Xtrabackup 增量备份 和 增量还原
  10. Netty学习——Thrift的入门使用