当前位置: 首页 > news >正文

072:【Django数据库】ORM聚合函数详解-aggregate和annotate

ORM聚合函数详解-aggregate和annotate:

aggregate和annotate的区别:

1、aggregate :返回使用聚合函数后的字段和值。
2、annotate :在原来模型字段的基础之上添加一个使用了聚合函数的字段,并且在使用聚合函数的时候,会使用当前这个模型的主键进行分组(group by)。比如以上 Sum 的例子,如果使用的是 annotate ,那么将在每条图书的数据上都添加一个字段叫做 total ,计算这本书的销售总额。而如果使用的是 aggregate ,那么将求所有图书的销售总额。

下面是需求是(基于上节课程情况),求每本书多少钱卖出去的:

def index(request):
    result = Book.objects.annotate(avg=Avg("bookorder__price"))
    print(result)
    for item in result:
        print(item.name, ":", item.avg)
    print(result.query)
    return HttpResponse("success")

结果是:

<QuerySet [<Book: Book object (1)>, <Book: Book object (2)>, <Book: Book object (3)>, <Book: Book object (4)>]>
三国演义 : 89.33333333333333
水浒传 : 93.5
西游记 : None
红楼梦 : None
SELECT `book`.`id`, `book`.`name`, `book`.`pages`, `book`.`price`, `book`.`rating`, `book`.`author_id`, `book`.`publisher_id`, AVG(`book_order`.`price`) AS `avg` FROM `book` LEFT OUTER JOIN `book_order` ON (`book`.`id` = `book_order`.`book_id`) GROUP BY `book`.`id` ORDER BY NULL

实例截图如下:

 

转载于:https://www.cnblogs.com/zheng-weimin/p/10246685.html

相关文章:

  • 配置ssh的双机信任
  • hdfs远程连接异常
  • linux if 命令判断条件总结
  • 【M15】了解异常处理(exception handling)的成本
  • 【代码】模板实现双向链表的去重、拼接、合并、排序
  • Netflix Media Database - 架构设计和实现
  • 又拍云引领云CDN加速 或成互联网刚性需求
  • Genymotion常见问题整合与解决方案(转)
  • 用webmagic实现一个java爬虫小项目
  • 化工文件下载地址
  • 搭建K8S高可用集群(二进制方式)
  • 20160309作业
  • Git 分支 - 分支管理
  • 修改linux的最大文件句柄数限制
  • DIY福音:Firefox菜单及右键菜单ID大全
  • 【5+】跨webview多页面 触发事件(二)
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • Cumulo 的 ClojureScript 模块已经成型
  • golang 发送GET和POST示例
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • mac修复ab及siege安装
  • MYSQL 的 IF 函数
  • SQLServer之创建显式事务
  • zookeeper系列(七)实战分布式命名服务
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 区块链分支循环
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 探索 JS 中的模块化
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 通过npm或yarn自动生成vue组件
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 1.Ext JS 建立web开发工程
  • ​​快速排序(四)——挖坑法,前后指针法与非递归
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • ​批处理文件中的errorlevel用法
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • (C++)八皇后问题
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • *1 计算机基础和操作系统基础及几大协议
  • .net2005怎么读string形的xml,不是xml文件。
  • .NET构架之我见
  • /bin/bash^M: bad interpreter: No such file ordirectory
  • /usr/bin/python: can't decompress data; zlib not available 的异常处理
  • @31省区市高考时间表来了,祝考试成功
  • @Autowired注解的实现原理
  • @ComponentScan比较
  • @property @synthesize @dynamic 及相关属性作用探究
  • [ Linux ] git工具的基本使用(仓库的构建,提交)
  • [120_移动开发Android]008_android开发之Pull操作xml文件
  • [23] 4K4D: Real-Time 4D View Synthesis at 4K Resolution
  • [C#]OpenCvSharp结合yolov8-face实现L2CS-Net眼睛注视方向估计或者人脸朝向估计
  • [COGS 622] [NOIP2011] 玛雅游戏 模拟
  • [CVPR2021]Birds of a Feather: Capturing Avian Shape Models from Images
  • [C语言][PTA基础C基础题目集] strtok 函数的理解与应用