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 相关文章推荐
使用pandas中的DataFrame数据绘制柱状图的方法
Apr 10 Python
Python的argparse库使用详解
Oct 09 Python
Python开发网站目录扫描器的实现
Feb 21 Python
Pytorch中的variable, tensor与numpy相互转化的方法
Oct 10 Python
python实现高斯投影正反算方式
Jan 17 Python
tensorflow之自定义神经网络层实例
Feb 07 Python
Python参数传递对象的引用原理解析
May 22 Python
pytorch随机采样操作SubsetRandomSampler()
Jul 07 Python
如何利用python之wxpy模块玩转微信
Aug 17 Python
Python字符串及文本模式方法详解
Sep 10 Python
python Tornado框架的使用示例
Oct 19 Python
Python 绘制多因子柱状图
May 11 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
php中0,null,empty,空,false,字符串关系的详细介绍
2013/06/20 PHP
PHP写的资源下载防盗链类分享
2014/05/12 PHP
php表单习惯用的正则表达式
2017/10/11 PHP
Laravel如何使用数据库事务及捕获事务失败后的异常详解
2017/10/23 PHP
PHP的RSA加密解密方法以及开发接口使用
2018/02/11 PHP
PHP实现的简单组词算法示例
2018/04/10 PHP
jQuery+jqmodal弹出窗口实现代码分明
2010/06/14 Javascript
jQuery的.live()和.die() 使用介绍
2011/09/10 Javascript
jQuery focus和blur事件的应用详解
2014/01/26 Javascript
js获取上传文件大小示例代码
2014/04/10 Javascript
jquery 中的each()跳出循环的语句
2014/05/23 Javascript
angularjs 处理多个异步请求方法汇总
2015/01/06 Javascript
JavaScript把数组作为堆栈使用的方法
2015/03/20 Javascript
谈谈JavaScript异步函数发展历程
2015/09/29 Javascript
内容滑动切换效果jquery.hwSlide.js插件封装
2016/07/07 Javascript
d3.js中冷门却实用的内置函数总结
2017/02/04 Javascript
原生JS实现简单放大镜效果
2017/02/08 Javascript
JavaScript函数参数的传递方式详解
2017/03/06 Javascript
使用webpack打包koa2 框架app
2018/02/02 Javascript
JS实现的判断方法、变量是否存在功能示例
2020/03/28 Javascript
vue中typescript装饰器的使用方法超实用教程
2019/06/17 Javascript
vue自动化路由的实现代码
2019/09/30 Javascript
JavaScript经典案例之简易计算器
2020/08/24 Javascript
[01:00:52]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第一场
2018/04/05 DOTA
python实现在sqlite动态创建表的方法
2015/05/08 Python
详解django中url路由配置及渲染方式
2019/02/25 Python
Python 中包/模块的 `import` 操作代码
2019/04/22 Python
处理Selenium3+python3定位鼠标悬停才显示的元素
2019/07/31 Python
Python的PIL库中getpixel方法的使用
2020/04/09 Python
北卡罗来纳州豪华家具和家居装饰店:Carolina Rustica
2018/10/30 全球购物
size?爱尔兰官方网站:英国伦敦的球鞋精品店
2019/03/31 全球购物
New Balance俄罗斯官方网上商店:购买运动鞋
2020/03/02 全球购物
实习老师个人总结的自我评价
2013/09/28 职场文书
技术总监管理岗位职责
2014/03/09 职场文书
董事长助理工作职责范本
2014/07/01 职场文书
2016校本研修培训心得体会
2016/01/08 职场文书