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 相关文章推荐
phpsir 开发 一个检测百度关键字网站排名的python 程序
Sep 17 Python
布同 Python中文问题解决方法(总结了多位前人经验,初学者必看)
Mar 13 Python
python获取远程图片大小和尺寸的方法
Mar 26 Python
Python字典操作简明总结
Apr 13 Python
python实现文本文件合并
Dec 29 Python
Python处理文本文件中控制字符的方法
Feb 07 Python
python 每天如何定时启动爬虫任务(实现方法分享)
May 21 Python
python实现爬山算法的思路详解
Apr 09 Python
python基于TCP实现的文件下载器功能案例
Dec 10 Python
Python格式化输出--%s,%d,%f的代码解析
Apr 29 Python
python打包多类型文件的操作方法
Sep 21 Python
如何一键升级Python所有包
Nov 05 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
CI框架学习笔记(一) - 环境安装、基本术语和框架流程
2014/10/26 PHP
php采用ajax数据提交post与post常见方法总结
2014/11/10 PHP
linux下php上传文件注意事项
2016/06/11 PHP
PHP编写文件多服务器同步程序
2016/07/02 PHP
mysql desc(DESCRIBE)命令实例讲解
2016/09/24 PHP
JavaScript 封装Ajax传递的数据代码
2009/06/05 Javascript
关于Jqzoom的使用心得 jquery放大镜效果插件
2010/04/12 Javascript
JavaScript 处理Iframe自适应高度(同或不同域名下)
2013/03/29 Javascript
jQuery动态添加删除select项(实现代码)
2013/09/03 Javascript
js全屏显示显示代码的三种方法
2013/11/11 Javascript
jQuery Easyui实现左右布局
2016/01/26 Javascript
javascript轻量级库createjs使用Easel实现拖拽效果
2016/02/19 Javascript
js表单验证实例讲解
2016/03/31 Javascript
利用Node.js对文件进行重命名
2017/03/12 Javascript
jQuery UI Grid 模态框中的表格实例代码
2017/04/01 jQuery
AngularJS路由Ui-router模块用法示例
2017/05/29 Javascript
uni-app之APP和小程序微信授权方法
2019/05/09 Javascript
JS脚本实现定时到网站上签到/签退功能
2020/04/22 Javascript
JavaScript前端开发时数值运算的小技巧
2020/07/28 Javascript
python正则表达式match和search用法实例
2015/03/26 Python
python 性能提升的几种方法
2016/07/15 Python
Windows下anaconda安装第三方包的方法小结(tensorflow、gensim为例)
2018/04/05 Python
python print出共轭复数的方法详解
2019/06/25 Python
python多线程案例之多任务copy文件完整实例
2019/10/29 Python
解决Opencv+Python cv2.imshow闪退问题
2020/04/24 Python
python requests包的request()函数中的参数-params和data的区别介绍
2020/05/05 Python
Windows环境下Python3.6.8 importError: DLLload failed:找不到指定的模块
2020/11/01 Python
css3动画事件—webkitAnimationEnd与计时器time事件
2013/01/31 HTML / CSS
如何使用html5与css3完成google涂鸦动画
2012/12/16 HTML / CSS
莫斯科隐形眼镜网上商店:Linzi
2019/07/22 全球购物
单位领导证婚词
2014/01/14 职场文书
企业总经理岗位职责
2014/02/13 职场文书
做一个有道德的人演讲稿
2014/05/14 职场文书
餐饮服务食品安全责任书
2014/07/25 职场文书
2015年医院科室工作总结范文
2015/05/26 职场文书
红色经典电影观后感
2015/06/18 职场文书