Django聚合查询和分组查询

聚合查询

聚合查询是对查询结果集进行某种特定的操作或者计算出某个值,例如对结果集求和、平均值、最大值、最小值等操作。在 Django 中,聚合查询的方法是使用 aggregate() 函数。

(1) 获得所有人的平均年龄

from django.db.models import Avg
from yourapp.models import Person

result = Person.objects.aggregate(avg_age=Avg('age'))
print(result['avg_age'])

(2) 查询男性和女性的人数及平均年龄

from django.db.models import Count, Avg
from yourapp.models import Person

result = Person.objects.values('gender').annotate(num_person=Count('id'), avg_age=Avg('age'))
for r in result:
    print(r['gender'], r['num_person'], r['avg_age'])

分组查询

分组查询是将查询结果按照某几列进行分组,并计算分组内的统计值,例如对某一列进行统计数值,并将结果按照指定列分组显示。在 Django 中,分组查询的方法是使用 values() 函数和 annotate() 函数。

(1) 查询男性和女性的人数

from django.db.models import Count
from yourapp.models import Person

result = Person.objects.values('gender').annotate(num_person=Count('id'))
for r in result:
    print(r['gender'], r['num_person'])

(2) 查询每个部门的人数

from django.db.models import Count
from yourapp.models import Person

result = Person.objects.values('department').annotate(num_person=Count('id'))
for r in result:
    print(r['department'], r['num_person'])

(3) 查询每个部门的平均年龄

from django.db.models import Avg
from yourapp.models import Person

result = Person.objects.values('department').annotate(avg_age=Avg('age'))
for r in result:
    print(r['department'], r['avg_age'])

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Django聚合查询和分组查询 - Python技术站

(0)
上一篇 2023年3月12日
下一篇 2023年3月12日

相关文章

  • Django(2) – Django模板

    1.Django模板介绍 基础概念 模板是具有一定的格式或骨架,可以动态的生成HTML 模板引擎决定以何种方式组织代码 一个项目可以有一个或者是多个模板引擎,Django里面主要两个模板引擎:DTL、Jinja2。 Jinja2之前Flask笔记里面有,点击跳转https://www.cnblogs.com/gltou/p/16828437.html   D…

    Django 2023年4月13日
    00
  • 详解Django ORM模块使用方法

    Django ORM模块是什么 Django ORM是Django框架的核心模块之一,它是ORM(Object-Relational Mapping)技术的实现。 所谓ORM,是将关系型数据库中的表映射为Python代码中的类,使得开发者可以通过操作Python对象的方式来操作数据库。Django ORM可以让开发者轻松地进行数据库操作,不需要编写复杂的SQ…

    2023年3月11日
    00
  • Django初识

    web框架 Web应用框架有助于减轻网页开发时共通性活动的工作负荷,例如许多框架提供数据库访问接口、标准样板以及会话管理等,可提升代码的可再用性。简单地说,就是你用别人搭建好的舞台来做表演,用别人做好的模板进行功能扩展。python的web应用框架主要有django,Tornado。 MVC模式和MTV模式 MVC全名是Model View Controll…

    Django 2023年4月11日
    00
  • django的templatetags

    创建tag方式,首先在需要使用tag的app下创建一个templatetags的python包, 然后在包里创建一个tag模块,例如hellotag.py from django import template register = template.Library() # 注意,这里的变量名一定是register,可不是任意的名称 @ register.s…

    Django 2023年4月11日
    00
  • uwsgi启动django项目的实现步骤

    下面我来详细讲解“uwsgi启动django项目的实现步骤”的完整攻略。 步骤一:安装uwsgi 在Linux系统中,我们可以使用pip命令来安装uwsgi,具体命令如下: sudo pip install uwsgi 步骤二:配置uwsgi 在uwsgi的配置文件中,需要设置以下几个选项: 1. chdir 该选项设置uwsgi启动时的工作目录,即Djan…

    Django 2023年5月16日
    00
  • django框架创建应用操作示例

    下面我会详细讲解“django框架创建应用操作示例”的完整攻略,包括两个示例说明。 简介 Django 是一款 Python Web 框架,它提供了快速搭建 Web 应用的工具和结构,同时也提供了一些基础库和模块来帮助开发者快速完成常见的 Web 开发任务。本文就是一个针对 Django 框架创建应用的操作示例。 创建Django应用 首先你需要安装 Dja…

    Django 2023年5月16日
    00
  • django 简单会议室预约(1)

    django 是python的一个web框架,为什么要用django,作者之前用过另一个框架flask,虽然flask比较简单很容易让人学,但是flask没有整体感,会让初学着茫然。 这里我们用django。现在最新版本是django-1.9.2。从1.7开始就有点区别了,后面会讲到。 首先搭建环境: Ubuntu 14.04 Python 2.7.6 Dj…

    Django 2023年4月11日
    00
  • Django视图层

    目录 Django视图层 一、视图层之必会三板斧 二、JsonResponse对象 三、request对象 四、视图层之FBV与CBV 五、CBV源码剖析 六、虚拟环境 Django视图层 一、视图层之必会三板斧 用来处理请求的视图函数都必须返回HttpResponse对象 # 完全正确 class HttpResponse: pass return Htt…

    Django 2023年4月10日
    00
合作推广
合作推广
分享本页
返回顶部