Django(part27)--聚合查询
学习笔记,仅供参考
文章目录
- 数据库的操作(CRUD操作)
- 聚合查询
- 不分组聚合
- 分组聚合
数据库的操作(CRUD操作)
聚合查询
聚合查询是指对某个数据表中的某个字段的数据计算其统计量,比如,求出bookstore_book数据表中书的平均价格,查询所有书的总个数等等等。
不分组聚合
不带分组的聚合查询是指导将全部数据进行集中统计查询。
- 用法
from django.db.models import *
Entry.objects.aggregate(结果变量名=聚合函数('列'))
#聚合函数
#Sum, Avg, Count, Max, Min
- 返回结果
由结果变量名和值组成的字典,格式为:
{"结果变量名": 值}
- 举个例子
我们先看一下bookstore_author数据表:
mysql> select * from bookstore_author;
+----+--------+-----+----------------------+
| id | name | age | email |
+----+--------+-----+----------------------+
| 1 | 山羊 | 19 | goatbishop@gamil.com |
| 2 | 小黄 | 10 | 1033794241@qq.com |
| 5 | 小黑 | 12 | xiaohei@gmail.com |
| 6 | 小白 | 18 | xiaobai@gmail.com |
| 7 | 山羊哥 | 27 | biggoat@gmail.com |
+----+--------+-----+----------------------+
5 rows in set (0.00 sec)
在Django shell中敲入如下命令:
from bookstore import models
from django.db.models import *
result = models.Author.objects.aggregate(myAvg=Avg('age'))
print("平均年龄是:", result['myAvg'])
print("result=", result)
得到结果:
平均年龄是: 17.2
result= {'myAvg': 17.2}
分组聚合
分组聚合是指计算查询结果中每一个对象所关联的对象集合,从而得出总计值(也可以是平均值或总和),即查询集的每一项生成聚合。
分组聚合的步骤:
- 首先,通过先用查询结果
Entry.object.values('列1', '列2')
查找到要分组聚合的列 - 再通过返回结果的
QuerySet.annotate(结果变量名=聚合函数('列'))
的方法分组聚合得到分组结果
- 举个例子
我们在Django shell中敲入如下代码:
from django.db.models import Count
from . import models
#得到所有出版社的查询集合QuerySet
pub_set = models.Book.objects.values('pub')
#根据出版社查询分组,出版社和Count的分组聚合查询集合
pub_count_set = pub_set.annotate(myCount=Count('pub'))
#返回查询集合
for item in pub_count_set:print("出版社:", item['pub'], "图书有:", item['myCount'])
输出结果:
出版社: 清华大学出版社 图书有: 2
出版社: 机械工业出版社 图书有: 1
出版社: 人民邮电出版社 图书有: 2
出版社: 黑山羊出版社 图书有: 1
Django(part27)--聚合查询相关推荐
- Django丨聚合与分组查询
多表实例 聚合查询 聚合查询函数时对一组值执行计算,并返回单个值 Django使用聚合查询前要先从django.db.models引用Avg.Max.Min.Count.Sum(首字母大写) from ...
- Django的mode的分组查询和聚合查询和F查询和Q查询
1.聚合查询 # 聚合函数aggregate,求指定字段的最大值,最小值,平均值,和的值,方法如下from django.db.models import Avgfrom django.db.mode ...
- Django 聚合查询
聚合查询是做数据分析的数据库基础.通常使用聚合函数完成聚合查询: Mysql聚类函数 Count 计数 Sum 求和 Avg 求平均数 Max最大 Min最小 django也有相似的操作,通常djan ...
- django orm关联查询_Django ORM 聚合查询和分组查询实现详解
models.py: from django.db import models # 出版社 class Publisher(models.Model): id = models.AutoField(p ...
- Django:ORM基本操作-CRUD,管理器对象objects,----->聚合查询、原生数据库操作
Microsoft Windows [版本 10.0.19042.928] (c) Microsoft Corporation.保留所有权利.C:\Users\520>cd..C:\Users& ...
- Django 【第六篇】ORM跨表操作(聚合查询,分组查询,F和Q查询等)
一:创建表 书籍模型: 书籍有书名和出版日期,一本书可能会有多个作者,一个作者也可以写多本书,所以作者和书籍的关系就是多对多的关联关系(many-to-many); 一本书只应该由一个出版商出 ...
- Day51python Django 多表操作 聚合查询、分组查询、F查询、Q查询
1聚合查询aggregate aggregate()是QuerySet 的一个终止子句,意思是说,它返回一个包含一些键值对的字典,可以自己制定键. 1.# 计算所有图书的平均价格 books = mo ...
- django之ORM查询操作(二)
文章目录 查询集 基础条件查询--针对一个属性 F和Q对象 聚合函数 统计总的阅读量 关联查询 基础关联查询 内连接查询 自关联查询 查询集 查询集: 表示从数据库中获取的模型对象集合 在管理器上调用 ...
- Web框架之Django_05 模型层了解(单表查询、多表查询、聚合查询、分组查询)
阅读目录 一.Django ORM 常用字段和参数: 二.单表查询 三.多表查询 基于双下划线的多表查询 四.聚合查询和分组查询 摘要: 单表查询 多表查询 聚合查询 分组查询 一.Django OR ...
最新文章
- 移植ffmpeg到VC环境心得
- excel另存为没有dbf_PDF转Excel怎么做的?节省工作时间,你要学会的办公技巧
- OGG 跳过事务(转)
- Spring JdbcTemplate快速入门
- js获取元素节点对象
- Virtualenv 相关
- 每日三道前端面试题--vue 第三弹
- 45.Linux/Unix 系统编程手册(下) -- System V IPC 介绍
- redis命令参考string---MSETNX
- 纯php代码进行删除数据操作
- 消消乐 游戏算法html,Vue实现开心消消乐游戏算法
- 您的php似乎没有安装运行wordpress所必需的mysql扩展_“您的 PHP 似乎没有安装运行 WordPress 所必需的 MySQL 扩展”处理方法...
- 为什么电脑总是弹出“拨号连接”界面?
- IB心理学社会文化介绍
- 如何在微信中做好微信h5棋牌下载类推广防封防屏蔽?
- 三维动画设计与制作【1】
- 小米9se用twrp刷机时,出现persist挂载失败,导致系统启动不了的解决方法
- 欧洲监管机构与银行合作开发区块链权证发行系统
- CUDA编程--邻近点查询
- graylog源码搭建
热门文章
- VS2012 快捷键 VS RESHARPER 设置
- qt找不到打印机_Qt无法调起打印机问题(QPrintDialog: Cannot be used on non-native printers)解决...
- 跟踪源码运行流程---SpringMVC学习笔记(四)
- [开源]Dapper Repository 一种实现方式
- CentOS7使用nmcli实现网络日常管理及多网卡bond
- 升级Mountain Lion后git等工具不能用的问题的解决方法
- ATEN—第九章OSPF多区域的配置
- 解决m2eclipse需要jdk的错误
- 表达式的计算结果必须为节点集 调试
- 浅谈JavaScript作用域,关于Java的学习路线资料