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的urllib库提交WEB表单
Feb 24 Python
Python查找函数f(x)=0根的解决方法
May 07 Python
Python实现从URL地址提取文件名的方法
May 15 Python
Python实现合并字典的方法
Jul 07 Python
Python实现变量数值交换及判断数组是否含有某个元素的方法
Sep 18 Python
在CMD命令行中运行python脚本的方法
May 12 Python
python opencv判断图像是否为空的实例
Jan 26 Python
python图像处理入门(一)
Apr 04 Python
解决Python计算矩阵乘向量,矩阵乘实数的一些小错误
Aug 26 Python
如何写python的配置文件
Jun 07 Python
python 代码运行时间获取方式详解
Sep 18 Python
python神经网络学习 使用Keras进行简单分类
May 04 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
为什么夜间收到的中波电台比白天多
2021/03/01 无线电
使用PHP制作新闻系统的思路
2006/10/09 PHP
Zend studio for eclipse中使php可以调用mysql相关函数的设置方法
2008/10/13 PHP
php读取EXCEL文件 php excelreader读取excel文件
2012/12/06 PHP
php截取视频指定帧为图片
2016/05/16 PHP
php curl中gzip的压缩性能测试实例分析
2016/11/08 PHP
php基于环形链表解决约瑟夫环问题示例
2017/11/07 PHP
Thinkphp5.0框架的Db操作实例分析【连接、增删改查、链式操作等】
2019/10/11 PHP
jQuery powerFloat万能浮动层下拉层插件使用介绍
2010/12/27 Javascript
js 火狐下取本地路径实现思路
2013/04/02 Javascript
JS实现在状态栏显示打字效果完整实例
2015/11/02 Javascript
js+canvas绘制矩形的方法
2016/01/28 Javascript
nodejs根据ip数组在百度地图中进行定位
2017/03/06 NodeJs
jQuery插件HighCharts绘制的2D堆柱状图效果示例【附demo源码下载】
2017/03/14 Javascript
EasyUI框架 使用Ajax提交注册信息的实现代码
2017/09/27 Javascript
vue中组件的过渡动画及实现代码
2018/11/21 Javascript
微信小程序非swiper组件实现的自定义伪3D轮播图效果示例
2018/12/11 Javascript
[02:27]2018DOTA2亚洲邀请赛趣味视频之钓鱼大赛 谁是垂钓冠军?
2018/04/05 DOTA
python生成随机图形验证码详解
2017/11/08 Python
Python简单计算数组元素平均值的方法示例
2017/12/26 Python
Python编程实现线性回归和批量梯度下降法代码实例
2018/01/04 Python
使用Python 正则匹配两个特定字符之间的字符方法
2018/12/24 Python
Django用户认证系统 User对象解析
2019/08/02 Python
Python实现微信中找回好友、群聊用户撤回的消息功能示例
2019/08/23 Python
TensorFlow查看输入节点和输出节点名称方式
2020/01/04 Python
jupyter lab的目录调整及设置默认浏览器为chrome的方法
2020/04/10 Python
结束运行python的方法
2020/06/16 Python
公司领导推荐信
2013/11/12 职场文书
汽车技术服务与营销专业推荐信
2013/11/29 职场文书
旷课检讨书2000字
2014/01/14 职场文书
幼师求职自荐信范文
2014/01/26 职场文书
森林病虫害防治方案
2014/06/02 职场文书
超市优秀员工获奖感言
2014/08/15 职场文书
公务员学习习总书记“三严三实”思想汇报
2014/09/19 职场文书
追悼会悼词大全
2015/06/23 职场文书
62句有关感恩节文案(推荐收藏)
2019/11/28 职场文书