聚合查询:
聚合函数必须用在分组之后,没有分组其实默认整体就是一组
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}]>

django基础之day04,聚合查询和分组查询的更多相关文章

  1. {django模型层(二)多表操作}一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询、分组查询、F查询和Q查询

    Django基础五之django模型层(二)多表操作 本节目录 一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询.分组查询.F查询和Q查询 六 xxx 七 ...

  2. Django Mysql数据库-聚合查询与分组查询

    一.聚合查询与分组查询(很重要!!!) 聚合查询:aggregate(*args, **kwargs),只对一个组进行聚合 from django.db.models import Avg,Sum,C ...

  3. Django【第7篇】:Django之ORM跨表操作(聚合查询,分组查询,F和Q查询等)

    django之跨表查询及添加记录 一:创建表 书籍模型: 书籍有书名和出版日期,一本书可能会有多个作者,一个作者也可以写多本书,所以作者和书籍的关系就是多对多的关联关系(many-to-many); ...

  4. Django框架(十)—— 多表操作:一对一、一对多、多对多的增删改,基于对象/双下划线的跨表查询、聚合查询、分组查询、F查询与Q查询

    目录 多表操作:增删改,基于对象/双下划线的跨表查询.聚合查询.分组查询.F查询与Q查询 一.创建多表模型 二.一对多增删改表记录 1.一对多添加记录 2.一对多删除记录 3.一对多修改记录 三.一对 ...

  5. 6月21日 Django ORM那些相关操作(表关联、聚合查询和分组查询)

    一.ForeignKey操作 正向查找 对象查找(跨表) 语法: 对象.关联字段.字段   示例: book_obj = models.Book.objects.first() # 第一本书对象 pr ...

  6. Web框架之Django_05 模型层了解(单表查询、多表查询、聚合查询、分组查询)

    摘要: 单表查询 多表查询 聚合查询 分组查询 一.Django ORM 常用字段和参数: 常用字段:#AutoFieldint自增列,必须填入参数primary_key = True,当model中 ...

  7. Django基础四之测试环境和ORM查询

    Django基础四之测试环境和ORM查询 目录 Django基础四之测试环境和ORM查询 1. 搭建测试环境 1.1 测试环境搭建方法: 1.2 使用测试环境对数据库进行CURD 1.3 返回Quer ...

  8. Django-model聚合查询与分组查询

    Django-model聚合查询与分组查询 聚合函数包含:SUM AVG MIN MAX COUNT 聚合函数可以单独使用,不一定要和分组配合使用:不过聚合函数一般和group by 搭配使用 agg ...

  9. python全栈开发day68-ORM操作:一般操作、ForeignKey操作、ManyToManyField、聚合查询和分组查询、F查询和Q查询等

    ORM操作 https://www.cnblogs.com/maple-shaw/articles/9403501.html 一.一般操作 1. 必知必会13条 <1> all(): 查询 ...

  10. 聚合查询、分组查询、F&Q查询

    一.聚合查询和分组查询 1.aggregate(*args, **kwargs): 通过对QuerySet进行计算,返回一个聚合值的字典.aggregate()中每个参数都指定一个包含在字典中的返回值 ...

随机推荐

  1. Mac的Safari安装油猴插件(Tampermonkey)

    Mac的Safari安装油猴插件(Tampermonkey) 官方的AppStore是没有油猴插件(Tampermonkey)的,官方插件不仅少,功能被阉割,相对弱小,还收费.嗯,这很苹果第三方拓展. ...

  2. react-router重定向

    ① ②通过this.props重定向

  3. 为React绑定事件,并修改state中的值

    import React from 'react' export default class ClickS extends React.Component { constructor () { sup ...

  4. 记一个vue-resource请求的低级错误

    对于初学的小菜鸡,经常会犯一些低级错误. 现在记录一下我在使用vue-resource发送post请求时的一个低级错误: window.BaseURL = '127.0.0.1:8888'; 8888 ...

  5. Flex调用本地文件分析

    最近在用Flex做一个相册的功能,因为图片数据很多,所以想调用本地文件的方式做. 但是B/S的缘故,很多安全上的限制给我造成了不小的麻烦,把我这个小菜鸟弄的晕头转向. 第一,刚开始,查了很多资料发现都 ...

  6. vue 解决跨域

    先上报错 以表尊重 在vue中 找到 config文件夹中的 index.js文件  配置更改如下 proxyTable: { '/api': { target: 'http://47.240.11. ...

  7. python之turtle画蚊香

    原理:利用turtle绘制圆形,并使圆半径逐步增加 代码如下: import turtle turtle.pensize(30) for i in range(30): turtle.circle(i ...

  8. 【原创】(十二)Linux内存管理之vmap与vmalloc

    背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本: ...

  9. React组件略讲

    React是前端组件化开发的开山鼻祖,这种开发方式彻底解决了的前端组件复用的痛点.今天,就来研究一下React组件开发. 前端同学一般都会从Vue入门,因为Vue使用的<template> ...

  10. 程序员的算法课(17)-常用的图算法:深度优先(DFS)

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/m0_37609579/article/de ...