Django ORM 聚合查询和分组查询

这篇具有很好参考价值的文章主要介绍了Django ORM 聚合查询和分组查询。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

阅读文本前请参考此文章的数据表结构

1.聚合查询

对QuerySet计算统计值,需要使用aggregate方法,提供的参数可以是一个或多个聚合函数

Django提供了一系列的聚合函数,其中Avg(平均值)、Count(计数)、Max(最大值)、Min(最小值)、Sum(加和)最为常用

要使用这些聚合函数,需要将它们引入当前的环境中:

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

首先得到id为1的Topic的Comment对象,之后,计算up值的加和。可以看到,字典结果的键名称是up__sum,这是Django根据字段名和聚合函数的名称自动拼接得到的:

comment = Comment.objects.filter(topic=1).aggregate(Sum('up'))
return HttpResponse("Hello World!" + str(comment['up__sum']))

也可以给aggregate传递多个聚合函数:

comment = Comment.objects.filter(topic=1).aggregate(Sum('up'), Max('up'))
return HttpResponse("Hello World!" + str(comment['up__sum'])
                    + '---' + str(comment['up__max']))

2.分组查询

第二类统计是对QuerySet中的每一个Model对象都生成一个统计值,这可以通过annotate方法完成

annotate方法的使用过程与aggregate是类似的,都需要传递聚合函数,来描述统计过程

统计每一个Topic对应的Comment的数量,利用annotate可以这样实现:

topic = Topic.objects.annotate(Count('comment'))

如果想得到每一个Topic的所有Comment的up加和:

comment = Comment.objects.values('topic_id').annotate(Sum('up')).order_by()
return HttpResponse("Hello World!" + str(comment[0]['up__sum']))

需要注意,annotatevalues方法的顺序非常重要,会影响实际的查询效果:

valuesannotate的前面,Django会按照values中指定的字段对Model对象进行分组,再对每个分组计算统计值,可以参照上述查询文章来源地址https://www.toymoban.com/news/detail-428561.html

到了这里,关于Django ORM 聚合查询和分组查询的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【MySQL】聚合函数与分组查询

    MySQL中的聚合函数用于对数据进行计算和统计,常见的聚合函数包括下面列举出来的聚合函数: 查看班级有多少同学 统计数学成绩有多少个 统计英语不及格的人数 查看数学成绩的总和 统计英语不及格的分数总和 统计不及格的英语的平均分不需要上面那么麻烦自己手动除:

    2024年02月14日
    浏览(41)
  • elasticsearch中的聚合分组查询

    分组聚合及嵌套查询 聚合查询可以理解为SQL中的求和、求最大值、最小值以及求均值的需求 嵌套可以理解为es存值的某一个字段为对象属性的值做处理. Elasticsearch Java API分组与聚合结合 其中对字段field_one进行分组,分组的别名为fieldOne,取2^31-1组数据.如果不设置size,查询的结果

    2024年02月11日
    浏览(46)
  • Django ORM 模糊查询实例解析

            在 Django 中,对象关系映射 (ORM) 系统提供了一种强大而直观的数据库交互方式。本博文将深入探讨 Django ORM 中的高级单表查询方法和模糊查询选项,使开发人员能够高效地检索和操作数据。         模糊查询是一种非常有用的功能,允许我们根据特定条件来过

    2024年01月19日
    浏览(35)
  • Java Elasticsearch多条件分组聚合查询

    需求         在项目开发中,需要从elasticsearch中查询日志数据,先统计每一天的日志调用量,然后在每一天的分组聚合基础上,再分组聚合统计成功和失败的日志调用量。 代码

    2024年02月08日
    浏览(54)
  • 五、浅析[ElasticSearch]底层原理与分组聚合查询

    集群节点介绍 es配置文件夹中 客户端节点 当主节点和数据节点配置都设置为false的时候,该节点只能处理路由请求,处理搜索,分发索引操作等,从本质上来说该客户节点表现为智能负载平衡器。独立的客户端节点在一个比较大的集群中是非常有用的,他协调主节点和数据节

    2024年02月16日
    浏览(44)
  • Django ORM 中的单表查询 API(1)

    在 Django 中,对象关系映射(ORM)提供了一种功能强大、表现力丰富的数据库交互方式。ORM 允许开发人员使用高级 Python 代码执行数据库查询,从而更轻松地处理数据库实体。 下面,我们将探讨 Django ORM 中单表查询 API 的用法,重点是 all()、filter()、get()、first() 和 last()。  

    2024年01月18日
    浏览(36)
  • Django ORM 中高级单表查询 API(2)

    Django ORM 中的单表查询 API(1) https://blog.csdn.net/Python_1981/article/details/135653173         在上一篇博文中,我们探讨了 Django ORM 中单表查询 API 的基础知识,重点是 all()、filter()、get()、first() 和 last()。在本博文中,我们将深入探讨 Django ORM 中更高级的查询方法及其用法,包括

    2024年01月22日
    浏览(65)
  • 【Django】聚合查询——连接和聚合

    还是以下面的模型为例进行讨论,给出示例代码和示例结果 如果需要聚合查询某个模型相关联的其他模型的字段,我们要使用 __(双下划线) 。 找出每家商店提供的书籍价格范围: 这个规则也适用于 aggregate() ,找出所有商店在售书籍中的最低价格和最高价格: 还可以进行

    2024年03月10日
    浏览(38)
  • 【数据库】通过实例讲清楚,Mongodb的增删查改,分组查询,聚合查询aggregate

    目录 一.基础概念 二.数据库的管理 1.创建数据库 2.删除数据库 二.集合的管理 1.显示所有集合 2.创建集合 3.删除当前集合 4.向集合中插入元素 三.文档的管理 1.文档插入 2.文档的更新 3.文档的删除 4.文档查询 (1)查询基本语法: (2)查询table2集合下的所有文档 (3)查询t

    2024年02月10日
    浏览(41)
  • ES设置最大查询条数限制,打破限制,聚合分组数量限制打破

    ​ 今天在做 ElasticSearch 进行查询的时候发现,在进行分页的时候,数据超出10000以后得页数,查询的时候会报错。后查询了 es 官方文档发现,查询数量的默认值是 10000 ; 官网链接:https://www.elastic.co/guide/en/elasticsearch/reference/7.8/index-modules.html#dynamic-index-settings 报错内容: 在

    2024年02月03日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包