Django Mysql数据库-聚合查询与分组查询
一、聚合查询与分组查询(很重要!!!)
聚合查询:aggregate(*args, **kwargs),只对一个组进行聚合
from django.db.models import Avg,Sum,Count,Max,Min # 1、查询所有图书的平均价格 print(models.Book.objects.all().aggregate(Avg("price")))
aggregate()是QuerySet 的一个终止子句(也就是返回的不再是一个QuerySet集合的时候),意思是说,它返回一个包含一些键值对的字典。键的名称是聚合值的标识符,值是计算出来的聚合值。键的名称是按照字段和聚合函数的名称自动生成出来的。如果你想要为聚合值指定一个名称,可以向聚合子句提供它。
from django.db.models import Avg,Sum,Count,Max,Min # 1、查询所有图书的平均价格 print(models.Book.objects.all().aggregate(avgprice = Avg("price")))
如果你希望生成不止一个聚合,你可以向aggregate()子句中添加另一个参数。所以,如果你也想知道所有图书价格的最大值和最小值,可以这样查询:
print(models.Book.objects.all().aggregate(Avg("price"),Max("price"),Min("price"))) #打印的结果是: {'price__avg': 174.33333333333334, 'price__max': Decimal('366.00'), 'price__min': Decimal('12.00')}
分组查询 :annotate():为QuerySet中每一个对象都生成一个独立的汇总值。
是对分组完之后的结果进行的聚合
1、统计每一本书的作者个数
# 方式一:print(models.Book.objects.all().annotate(authorNum = Count("authorlist__name")).values("authorNum"))# 方式二:booklist =models.Book.objects.all().annotate(authorNum=Count("authorlist__name"))for book_obj in booklist:print(book_obj.title,book_obj.authorNum)
2、统计每一个出版社最便宜的书
# 2、统计每一个出版社的最便宜的书# 方式一:print(models.Book.objects.values("publish__name").annotate(nMinPrice=Min('price'))) 注意:values内的字段即group by的字段,,也就是分组条件# 方式二:print(models.Publish.objects.all().annotate(minprice=Min("book__price")).values("name","minprice"))# 方式三publishlist = models.Publish.objects.annotate(minprice = Min("book__price"))for publish_obj in publishlist:print(publish_obj.name,publish_obj.minprice)
3、统计每一本以py开头的书籍的作者个数:
print(models.Book.objects.filter(title__startswith="py").annotate(authNum = Count("authorlist__name")).values("authNum"))
4、统计不止一个作者的图书:
print(models.Book.objects.annotate(num_authors=Count('authorlist__name')).filter(num_authors__gt=1).values("title","num_authors"))
5、根据一本图书作者数量的多少对查询集QuerySet进行排序:
print(models.Book.objects.all().annotate(authorsNum=Count("authorlist__name")).order_by("authorsNum"))
6、查询各个作者出的书的总价格:
# 方式一print(models.Author.objects.all().annotate(priceSum = Sum("book__price")).values("name","priceSum"))# 方式二print(models.Book.objects.values("authorlist__name").annotate(priceSum=Sum("price")).values("authorlist__name","priceSum"))
转载于:https://www.cnblogs.com/Paul-watermelon/p/10516146.html
Django Mysql数据库-聚合查询与分组查询相关推荐
- Mysql数据库的条件查询(聚合函数、分组查询)
Mysql数据库的条件查询 一.聚合函数 1.聚合函数的介绍 聚合函数又叫组函数,通常是对表中的数据进行统计和计算,一般结合分组(group by)来使用,用于统计和计算分组数据. 常用的聚合函数: ...
- Django 【第六篇】ORM跨表操作(聚合查询,分组查询,F和Q查询等)
一:创建表 书籍模型: 书籍有书名和出版日期,一本书可能会有多个作者,一个作者也可以写多本书,所以作者和书籍的关系就是多对多的关联关系(many-to-many); 一本书只应该由一个出版商出 ...
- Web框架之Django_05 模型层了解(单表查询、多表查询、聚合查询、分组查询)
阅读目录 一.Django ORM 常用字段和参数: 二.单表查询 三.多表查询 基于双下划线的多表查询 四.聚合查询和分组查询 摘要: 单表查询 多表查询 聚合查询 分组查询 一.Django OR ...
- day08 外键字段的增删改查 正向反向插叙概念 跨表查询 聚合查询与分组查询 F查询
day08 外键字段的增删改查 正向反向插叙概念 跨表查询 聚合查询与分组查询 F查询 昨日内容复习 自定义过滤器.标签.inclusion_tag 1.首先现在应用目录下创建名字为templatet ...
- MySQL数据库中的多表查询含义以及练习~建议码友们点亮拇指+收藏呐~
MySQL数据库中的多表查询含义以及练习 一. 多表查询含义 二. 多表查询练习 1. 已知表 2. 需求And代码 一. 多表查询含义 查询语法: select列名列表from表名列表where条件 ...
- MySQL 数据库 like 语句通配符模糊查询小结
MySQL 报错:Parameter index out of range (1 > number of parameters, which is 0)--MySQL 数据库 like 语句通配 ...
- MySQL对数据表进行分组查询(GROUP BY)
MySQL对数据表进行分组查询(GROUP BY) GROUP BY关键字可以将查询结果按照某个字段或多个字段进行分组.字段中值相等的为一组.基本的语法格式如下: GROUP BY 属性名 [HAVI ...
- mysql数据库表的多条件查询
mysql数据库表的多条件查询 一.select语句基本查询 SELECT 字段1,字段2....FROM 表名[WHERE 条件] [LIMIT N][ OFFSET M] select可以返回多条 ...
- MySQL数据库C接口的数据查询操作示例
MySQL数据库C接口的数据查询操作示例 命令行操作 (1)建库建表(已有则不用) 连接MySQL服务器,并登录之.选择某个数据库.假设用户在这个数据库下已有一个表了. (2)查询所有数据的方法 SE ...
- 【如何通过汉字首字母拼写查询数据】mysql数据库汉字首字母获取查询或通过ES插件elasticsearch-analysis-pinyin进行汉字首拼查询
一.mysql数据库汉字首字母获取查询 1.汉字提取首字母 get_first_pinyin_char: 此函数是将一个中文字符串的第一个汉字转成拼音字母 (例如:"李"-> ...
最新文章
- Functional Programming Contest - September'14
- 常用数学符号读法大全
- 51Nod 1007 正整数分组 | DP (01背包)
- MSDN演练时发现的SqlServer2005数据库连接问题
- 【flutter】学习之路(一)环境的搭建
- 为了金秋那沉甸甸的麦穗,我绝不辜负春天
- java 所有子类_java 查找类的所有子类
- 常用的hooks入门
- 那些年,我们解析过的前端异常
- SAS 146GB*8 RAID5数据恢复过程(HP 双循环)
- 至强cpu型号列表_Cascade Lake全家福:图说第二代至强可扩展处理器
- 2019matlab安装
- Linux虚拟机中vim编辑器常用命令介绍(二)
- 小米盒子投屏+android,使用小米盒子手机投屏电视看村晚
- C语言-超市仓库管理系统的设计与实现
- Visual Studio Code 官方护眼主题绿豆沙颜色修改,让你的眼睛远离疲劳!
- 域名邮箱什么,如何开通自定义邮箱后缀的邮箱?
- 大数据时代最全的医学公共数据库合集整理
- JavaScript看这一篇就够了,简单全面一发入魂
- MongoDB数据库—基本操作
热门文章
- 华为鸿蒙系统再公测,安卓再见!华为正式发布鸿蒙系统公测版!
- 前端jquery学习
- 计算机网络在物流领域的应用研究,计算机网络技术在物流经济领域中的应用特点及其作用.doc...
- springboot不返回指定的字段(隐藏字段)
- java基础总结03-进制
- WPF学习笔记(5):两个DataGrid的滚动条实现同步滚动(转)
- linux oom-killer
- Spring框架中constructor-arg与property理解
- SOCKET 478/775是两种主板的CPU接口类型
- 找到的The LEGEND of the DRAGON的新下载地址