一:聚合查询

1.聚合函数作用
聚合查询通常情况下都是配合分组一起使用的
2.聚合函数查询关键字:
aggregate
3.聚合函数
Max		: 最大值
Min : 最小值
Sum : 求合
Count : 计数
Avg : 平均值
4.聚合函数使用
# 聚合函数查询

from app01 import models
from django.db.models import Max,Min,Sum,Count,Avg # 1.所有书的平均价格
res = models.Book.objects.aggregate(Avg('price'))
print(res)

# 2.上述方法一致性使用
res = models.Book.objects.aggregate(Max('price'), Min('price'), Sum('price'), Count('pk'), Avg('price'))
print(res)

二:分组查询

1.分组查询
annotate()为调用的QuerySet中每一个对象都生成一个独立的统计值(统计方法用聚合函数,所有使用前要从django.db.models引入Avg,Max,Count,Sum(首字母大写))。
2.返回值
  • 分组后,用values取值,则返回值是QuerySet书籍类型里面为一个个字典
  • 分组后,用values_list取值,则返回值是QuerySet数据类型里面为一个个元组

MySQL中的limit相当于ORM中的QuerySet数据类型的切片。

3.分组查询关键字
annotate()  里面放聚合函数
  • values 或者 values_list 放在 annotate 前面:values 或者 values_list 是声明以什么字段分组,annotate 执行分组。
  • values 或者 values_list 放在annotate后面: annotate 表示直接以当前表的pk执行分组,values 或者 values_list 表示查询哪些字段, 并且要将 annotate 里的聚合函数起别名,在 values 或者 values_list 里写其别名。
  • filter放在 annotate 前面:表示where条件
  • filter放在annotate后面:表示having
4.分组查询特点
分组之后默认只能获取分组的依据 组内其他字段都无法直接获取

严格模式
ONLY_FULL_GROUP_BY
5总结:

跨表分组查询本质就是将关联表join成一张表,再按单表的思路进行分组查询

三:分组使用

1.统计每一本书的作者个数
from django.db.models import Max, Min, Sum, Count, Avg

# res = models.Book.objects.annotate()
按照书分组 正向查询 按字段 authors__kp 分组省略 __kp 将前面数据拿过来
res = models.Book.objects.annotate(authors_num=Count('authors')).values('title', 'authors_num')
print(res)

models后面点什么 就按什么分组 

author_num 是我们自己定义的字段 用来存储统计出来的每本书对应的作者个数
2.统计每个出版社卖的最便宜的书的价格
出版社查询书 反向 小写       跨表查询
res = models.Publish.objects.annotate(min_price=Min('book__price')).values('name', 'min_price')
print(res)

3.统计不止一个作者的图书
1.先按照图书分组
2.过滤出不止一个作者的图书 # 按书籍分组 正向 字段 每一本书对应的作者个数 筛选出每一本书作者个数大于1的
res = models.Book.objects.annotate(author_num=Count('authors')).filter(author_num__gt=1).values('title','author_num','authors__name')
print(res)

4.查询每个作者出的书的总价格
res = models.Author.objects.annotate(sum_price=Sum('book__price')).values('name', 'sum_price')
print(res)

Django聚合函数与分组查询的更多相关文章

  1. $Django 聚合函数、分组查询、F,Q查询、orm字段以及参数

        一.聚合函数    from django.db.models import Avg,Sum,Max,Min,Count,F,Q   #导入    # .查询图书的总价,平均价,最大价,最小价 ...

  2. ORM中聚合函数、分组查询、Django开启事务、ORM中常用字段及参数、数据库查询优化

    聚合函数 名称 作用 Max() 最大值 Min() 最小值 Sum() 求和 Count() 计数 Avg() 平均值 关键字: aggregate 聚合查询通常都是配合分组一起使用的 关于数据库的 ...

  3. hibernate学习系列-----(5)hibernate基本查询下篇:hibernate聚合函数、分组查询及命名查询

    在上一篇中,大致学习了hibernate的基本查询:HQL基本查询,今天,继续昨天的步伐,继续学习hibernate的基本查询..... 1.hql聚合函数,先大致列一下hql的聚合函数有哪些吧: 在 ...

  4. MySQL数据操作与查询笔记 • 【第6章 聚合函数和分组查询】

    全部章节   >>>> 本章目录 6.1 sum.max 和 min 聚合函数 6.1.1 聚合函数介绍 6.1.2 sum 函数 6.1.3 max/min 函数 6.2 a ...

  5. Django ORM 多对多操作 使用聚合函数和分组 F查询与Q查询

    创建表 # models.py form django.db import models class Book(models.Model): # 表名book,django会自动使用项目名+我们定义的 ...

  6. SQL Server 基础 04 函数与分组查询数据

    函数与分组查询数据 系统函数分 聚合函数.数据类型转换函数.日期函数.数学函数 . . . 1. 聚合函数 主要是对一组值进行计算,然后返回一个值. 聚合函数包括 sum(求和).avg(求平均值). ...

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

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

  8. orm中的聚合函数,分组,F/Q查询,字段类,事务

    目录 一.聚合函数 1. 基础语法 2. Max Min Sum Avg Count用法 (1) Max()/Min() (2)Avg() (3)Count() (4)聚合函数联用 二.分组查询 1. ...

  9. SQL语句汇总(三)——聚合函数、分组、子查询及组合查询

    聚合函数: SQL中提供的聚合函数可以用来统计.求和.求最值等等. 分类: –COUNT:统计行数量 –SUM:获取单个列的合计值 –AVG:计算某个列的平均值 –MAX:计算列的最大值 –MIN:计 ...

  10. SQL语句汇总(三)——聚合函数、分组、子查询及组合查询

    拖了一个星期,终于开始写第三篇了.走起! 聚合函数: SQL中提供的聚合函数可以用来统计.求和.求最值等等. 分类: –COUNT:统计行数量 –SUM:获取单个列的合计值 –AVG:计算某个列的平均 ...

随机推荐

  1. 5.监控MySQL

    prometheus监控MySQL需要用到mysql_exporter. mysql_exporter 项目地址:https://github.com/prometheus/mysqld_export ...

  2. 组件化开发3-cocoaPods私有库制作

    一.创建索引项目ZHMCSSpec 1-1 在代码托管网站上建立索引项目ZHMCSSpec(以这个名称为例) 1-2 在本地创建ZHMCSSpec,并与远程索引建立联系 pod repo add ZH ...

  3. C++面向对象编程之point-like classes的智能指针和迭代器、function-like classes即仿函数

    1.智能指针 智能指针里面包含其他指针的形式和 委托 感觉比较像; 智能指针一定都需要重载 * 和 -> 操作符 ; 这个符号它作用后还能再继续作用下去; 2.迭代器: 这里主要关注 * 和 - ...

  4. MQ系列6:消息的消费

    MQ系列1:消息中间件执行原理 MQ系列2:消息中间件的技术选型 MQ系列3:RocketMQ 架构分析 MQ系列4:NameServer 原理解析 MQ系列5:RocketMQ消息的发送模式 在之前 ...

  5. day01-4-订座功能

    满汉楼01-4 4.功能实现03 4.5订座功能 4.5.1功能说明 如果该餐桌处于已经预定或者就餐状态时,不能进行预定,并给出相应提示 4.5.2思路分析 根据显示界面,要考虑以下两种状态 检测餐桌 ...

  6. 齐博x1齐博首创钩子的使用方法

    齐博X1有两套钩子体系,第一套是基于TP思路设计的.跟外面的大同小异.现在重点讲一下第二套我们首创的使用方法. 首先说一下如何埋钩子,这个跟TP思路的钩子类似,就是在页面的任何地方加入如下代码即可如下 ...

  7. 39.BasicAuthentication认证

    BasicAuthentication认证介绍 BasicAuthentication使用HTTP基本的认证机制 通过用户名/密码的方式验证,通常用于测试工作,尽量不要线上使用 用户名和密码必须在HT ...

  8. CentOS7虚拟机配置git仓库(配置虚拟机,网络,git仓库,windows端git访问)

    想要达成的目的:从windows使用git访问CentOS7服务器上搭建的git仓库 用到的软件: (1)VMware-workstation-full-15.5.0-14665864.exe (2) ...

  9. 一、SQL介绍

    Mysql 简单来说,数据库就是一个存储数据的仓库,它将数据按照特定的规律存储在磁盘上.为了方便用户组织和管理数据,其专门提供了数据库管理系统.通过数据库管理系统,用户可以有效的组织和管理存储在数据库 ...

  10. 利用xtrabackup8完全,增量备份及还原MySQL8

    利用xtrabackup8完全,增量备份及还原MySQL8 1.环境准备 服务器 作用 数据库版本 xtrabackup版本 10.0.0.8 数据备份 mysql8.0.26 8.0.28 10.0 ...