django 中的聚合函数,分组函数,F 查询,Q查询


Posted in Python onJuly 25, 2019

先以mysql的语句,聚合用在分组里,

对mysql中groupby 是分组

每什么的时候就要分组,如 每个小组,就按小组分,

group by 字段 having 聚合函数

#举例 :求班里的平均成绩, select Avg(score) from stu

在django中

聚合 是aggreate(*args,**kwargs),通过QuerySet 进行计算。做求值运算的时候使用

分组 是annotate(*args,**kwargs),括号里是条件,遇到 每什么的时候就要分组,

先从models 导入要用到的函数

from django.db.models import Min,Avg,Max,Sum

def aggregate(request):

  #求所有书籍的平均价格
  ret11 = Book.objects.all().aggregate(Avg("price"))
  # print(ret11)#{'price__avg': 51.975}

  #求所有书籍的最高价
  ret12 = Book.objects.all().aggregate(MaxPrice=Max('price'))
  # print(ret12)#{'MaxPrice': Decimal('100.00')}

  #egon 出版过书籍的最高价格
  p = Book.objects.filter(authors__name='egon').aggregate(Max('price'))

  print(p)#{'price__max': Decimal('100.00')}



  #分组 annotate()
  #每一个作者出版过的书的最高价 ,
  #解析,按照作者的名字分组,就要用到values,显示的是字段的名字,

  b1 = Book.objects.values('authors__name').annotate(Max('price'))

  print(b1)
  #<QuerySet [{'authors__name': 'egon', 'price__max': Decimal('100.00')},
      # {'authors__name': 'alex', 'price__max': Decimal('100.00')},
      # {'authors__name': 'yuan', 'price__max': Decimal('100.00')},
      # {'authors__name': 'oldboy', 'price__max': Decimal('100.00')}]># 四个作者都关联了同一本书,而这本书又是最高价
#每个出版社出版的最低价格的书籍

b2 = Book.objects.values('publish__name').annotate(Min('price'))
print(b2)
#<QuerySet [{'publish__name': '北京出版社', 'price__min': Decimal('100.00')},
# {'publish__name': '河下出版社', 'price__min': Decimal('45.00')},
# {'publish__name': '清华出版社', 'price__min': Decimal('39.90')},
# {'publish__name': '人民出版社', 'price__min': Decimal('23.00')}]>

F Q 查询

F,主要是做查询

Q查询 可以做组合条件的查询 & 是 与 ,|(管道符) 或,~ 非

def FAndQ(request):
 
  #给每本书涨价10元,
  #用sql语句写 update book set price=price+10
 
  #F,主要是做查询
  # Book.objects.all().update(price=F('price')+10)
 
  #查询书籍是富开头,并且价格大于30的书籍 ,逗号 可以做 与 的关系查询
  b4 = Book.objects.filter(title__startswith="富",price__gt=30)
  # print(b4)#<QuerySet [<Book: 富爸爸>]>
 
 
  #Q查询 可以做组合条件的查询 & 是 与 ,|(管道符) 或,~ 非
 
  ##查询书籍是富开头,或价格大于30的书籍
  b5 = Book.objects.filter(Q(title__startswith="富") | Q(price__gt=60))
  # print(b5)
  #<QuerySet [<Book: Linux>, <Book: 项塔兰>, <Book: 追风筝的人>, <Book: 富爸爸>]>
 
  #组合查询,以富开头,价格大于60 ,或者id大于5的书籍
  b6 = Book.objects.filter(Q(title__startswith="富")&Q(price__gt=60)|Q(id__gt=5))
  #print(b6)#<QuerySet [<Book: 富儿子>]>
  #
  #查询条件如果不加Q,就要放到最后面,
  b7 = Book.objects.filter(Q(price__gt=60) | Q(id__gt=5),title__startswith="富")
  # print(b7)
 
  # ~ 取反的意思
  b8 = Book.objects.filter(Q(title__startswith="富") & ~Q(price__gt=60) | Q(id__gt=5))
  print(b8)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python dict.get()和dict['key']的区别详解
Jun 30 Python
python爬虫入门教程--快速理解HTTP协议(一)
May 25 Python
pycharm远程linux开发和调试代码的方法
Jul 17 Python
python RabbitMQ 使用详细介绍(小结)
Nov 08 Python
python采集微信公众号文章
Dec 20 Python
tensorflow的计算图总结
Jan 12 Python
使用Python打造一款间谍程序的流程分析
Feb 21 Python
简单了解python列表和元组的区别
May 14 Python
python利用faker库批量生成测试数据
Oct 15 Python
python实现测试工具(二)——简单的ui测试工具
Oct 19 Python
python爬取微博评论的实例讲解
Jan 15 Python
Python绘制K线图之可视化神器pyecharts的使用
Mar 02 Python
python使用paramiko模块通过ssh2协议对交换机进行配置的方法
Jul 25 #Python
python2 中 unicode 和 str 之间的转换及与python3 str 的区别
Jul 25 #Python
Python 3.8 新功能全解
Jul 25 #Python
python3.7 的新特性详解
Jul 25 #Python
python issubclass 和 isinstance函数
Jul 25 #Python
django的分页器Paginator 从django中导入类
Jul 25 #Python
python threading和multiprocessing模块基本用法实例分析
Jul 25 #Python
You might like
MySQL中create table语句的基本语法是
2007/01/15 PHP
PHP生成条形图的方法
2014/12/10 PHP
浅析php设计模式之数据对象映射模式
2016/03/03 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
2017/07/26 PHP
PHP实现转盘抽奖算法分享
2020/04/15 PHP
新浪的图片新闻效果
2007/01/13 Javascript
JavaScript高级程序设计(第3版)学习笔记12 js正则表达式
2012/10/11 Javascript
parentElement,srcElement的使用小结
2014/01/13 Javascript
jQuery中$.click()无效问题分析
2015/01/29 Javascript
js+html5实现canvas绘制镂空字体文本的方法
2015/06/05 Javascript
jQuery基于toggle实现click触发DIV的显示与隐藏问题分析
2016/06/12 Javascript
利用Jasmine对Angular进行单元测试的方法详解
2017/06/12 Javascript
微信小程序实现留言板
2018/10/31 Javascript
javascript实现对话框功能警告(alert 消息对话框)确认(confirm 消息对话框)
2019/05/07 Javascript
[03:51]吞吞映像 每周精彩击杀top10第二弹
2014/06/25 DOTA
[55:11]完美世界DOTA2联赛PWL S2 SZ vs LBZS 第一场 11.26
2020/11/30 DOTA
Python制作CSDN免积分下载器
2015/03/10 Python
python文本数据相似度的度量
2018/03/12 Python
Python lambda函数基本用法实例分析
2018/03/16 Python
Python3使用pandas模块读写excel操作示例
2018/07/03 Python
详解Python是如何实现issubclass的
2019/07/24 Python
python爬虫 execjs安装配置及使用
2019/07/30 Python
实现Python与STM32通信方式
2019/12/18 Python
在tensorflow以及keras安装目录查询操作(windows下)
2020/06/19 Python
Python常驻任务实现接收外界参数代码解析
2020/07/21 Python
Python xmltodict模块安装及代码实例
2020/10/05 Python
美国学校校服,儿童和婴儿服装:Cookie’s Kids
2016/10/14 全球购物
受外贸欢迎的美国主机:BlueHost
2017/05/16 全球购物
亚马逊新加坡官方网站:Amazon.sg
2020/03/25 全球购物
工作建议书范文
2014/05/13 职场文书
地球物理学专业推荐信
2014/09/08 职场文书
银行自荐信怎么写
2015/03/05 职场文书
2015年社区科普工作总结
2015/05/13 职场文书
2016年小学植树节活动总结
2016/03/16 职场文书
如何书写公司员工保密协议?
2019/06/27 职场文书
python爬虫--selenium模块
2021/03/31 Python