学习笔记,仅供参考


文章目录

  • 数据库的操作(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)--聚合查询相关推荐

  1. Django丨聚合与分组查询

    多表实例 聚合查询 聚合查询函数时对一组值执行计算,并返回单个值 Django使用聚合查询前要先从django.db.models引用Avg.Max.Min.Count.Sum(首字母大写) from ...

  2. Django的mode的分组查询和聚合查询和F查询和Q查询

    1.聚合查询 # 聚合函数aggregate,求指定字段的最大值,最小值,平均值,和的值,方法如下from django.db.models import Avgfrom django.db.mode ...

  3. Django 聚合查询

    聚合查询是做数据分析的数据库基础.通常使用聚合函数完成聚合查询: Mysql聚类函数 Count 计数 Sum 求和 Avg 求平均数 Max最大 Min最小 django也有相似的操作,通常djan ...

  4. django orm关联查询_Django ORM 聚合查询和分组查询实现详解

    models.py: from django.db import models # 出版社 class Publisher(models.Model): id = models.AutoField(p ...

  5. Django:ORM基本操作-CRUD,管理器对象objects,----->聚合查询、原生数据库操作

    Microsoft Windows [版本 10.0.19042.928] (c) Microsoft Corporation.保留所有权利.C:\Users\520>cd..C:\Users& ...

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

    一:创建表 书籍模型: 书籍有书名和出版日期,一本书可能会有多个作者,一个作者也可以写多本书,所以作者和书籍的关系就是多对多的关联关系(many-to-many);     一本书只应该由一个出版商出 ...

  7. Day51python Django 多表操作 聚合查询、分组查询、F查询、Q查询

    1聚合查询aggregate aggregate()是QuerySet 的一个终止子句,意思是说,它返回一个包含一些键值对的字典,可以自己制定键. 1.# 计算所有图书的平均价格 books = mo ...

  8. django之ORM查询操作(二)

    文章目录 查询集 基础条件查询--针对一个属性 F和Q对象 聚合函数 统计总的阅读量 关联查询 基础关联查询 内连接查询 自关联查询 查询集 查询集: 表示从数据库中获取的模型对象集合 在管理器上调用 ...

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

    阅读目录 一.Django ORM 常用字段和参数: 二.单表查询 三.多表查询 基于双下划线的多表查询 四.聚合查询和分组查询 摘要: 单表查询 多表查询 聚合查询 分组查询 一.Django OR ...

最新文章

  1. 移植ffmpeg到VC环境心得
  2. excel另存为没有dbf_PDF转Excel怎么做的?节省工作时间,你要学会的办公技巧
  3. OGG 跳过事务(转)
  4. Spring JdbcTemplate快速入门
  5. js获取元素节点对象
  6. Virtualenv 相关
  7. 每日三道前端面试题--vue 第三弹
  8. 45.Linux/Unix 系统编程手册(下) -- System V IPC 介绍
  9. redis命令参考string---MSETNX
  10. 纯php代码进行删除数据操作
  11. 消消乐 游戏算法html,Vue实现开心消消乐游戏算法
  12. 您的php似乎没有安装运行wordpress所必需的mysql扩展_“您的 PHP 似乎没有安装运行 WordPress 所必需的 MySQL 扩展”处理方法...
  13. 为什么电脑总是弹出“拨号连接”界面?
  14. IB心理学社会文化介绍
  15. 如何在微信中做好微信h5棋牌下载类推广防封防屏蔽?
  16. 三维动画设计与制作【1】
  17. 小米9se用twrp刷机时,出现persist挂载失败,导致系统启动不了的解决方法
  18. 欧洲监管机构与银行合作开发区块链权证发行系统
  19. CUDA编程--邻近点查询
  20. graylog源码搭建

热门文章

  1. VS2012 快捷键 VS RESHARPER 设置
  2. qt找不到打印机_Qt无法调起打印机问题(QPrintDialog: Cannot be used on non-native printers)解决...
  3. 跟踪源码运行流程---SpringMVC学习笔记(四)
  4. [开源]Dapper Repository 一种实现方式
  5. CentOS7使用nmcli实现网络日常管理及多网卡bond
  6. 升级Mountain Lion后git等工具不能用的问题的解决方法
  7. ATEN—第九章OSPF多区域的配置
  8. 解决m2eclipse需要jdk的错误
  9. 表达式的计算结果必须为节点集 调试
  10. 浅谈JavaScript作用域,关于Java的学习路线资料