Django聚合查询和分组查询

yizhihongxing

聚合查询

聚合查询是对查询结果集进行某种特定的操作或者计算出某个值,例如对结果集求和、平均值、最大值、最小值等操作。在 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如何重设Admin密码

    django设置用户是python manage.py createsuperuser,但是如果忘记密码,那么应该进入shell环境 下修改 python manage.py shell   from django.contrib.auth.models import User user = User.objects.get(username=’admin’…

    Django 2023年4月11日
    00
  • Django视图和URL配置详解

    Django是一个开发Web应用的强大框架,其中视图(Views)和URL配置(URL Configuration)是构成Django应用的重要组成部分,下面我将为您详细讲解这两个部分的内容。 Django视图(Views) 在Django中,视图是指处理HTTP请求并返回HTTP响应的Python函数。通过定义视图,我们可以实现Web应用程序中各种不同的功…

    Django 2023年5月16日
    00
  • Django框架(十八)—— auth框架:用户登录、注册、认证

    一、什么是author模块 Auth模块是Django自带的用户认证模块,可以实现包括用户注册、用户登录、用户认证、注销、修改密码等功能。默认使用 auth_user 表来存储用户数据。 二、auth模块的使用 1、创建超级用户(create_superuser()) 创建超级用户就是在auth_user表中插入数据,密码是加密的,因此不能手动在数据库中插入…

    Django 2023年4月10日
    00
  • 基于Django的Admin后台实现定制简单监控页

    基于Django的Admin后台可以实现简单监控页,下面我将详细讲解如何实现。 准备工作 首先,需要在Django项目中创建一个app,用于管理监控页相关功能。在app目录下创建一个名为admin_dashboards的app。 添加监控模型 在admin_dashboards目录下打开models.py文件,定义一个监控模型用于存储需要监控的数据。 示例代…

    Django 2023年5月16日
    00
  • Django 如何实现文件上传下载

    下面是关于Django如何实现文件上传下载的完整攻略及两条示例说明。 文件上传 1. 在模型中定义文件类型的字段 Django模型中有一个文件类型的字段(FileField),可以定义文件上传的位置以及文件存储在服务器上的名称。 示例: from django.db import models class NewFile(models.Model): tit…

    Django 2023年5月16日
    00
  • Django+Vue打造购物网站(九)

    支付宝沙箱环境配置 https://openhome.alipay.com/platform/appDaily.htm?tab=info 使用支付宝账号进行登陆 RSA私钥及公钥生成 https://docs.open.alipay.com/291/105971/下载工具,按文档提示使用 在trade文件夹下新建keys文件夹,新建public.txt和pr…

    2023年4月9日
    00
  • Django创建App报错

    在django下创建APP项目时遇到的坑 python manage.py startapp app01 报错内容如下:   解决:找到报错中的文件夹151行删除items(),)中的逗号即可   在命令行下运行python manage.py runserver/python manage.py createsuperuser时提示错误:ImportErr…

    Django 2023年4月12日
    00
  • django 操作前端数据

    django 利用json处理前端页面数据,FLASK当中也同样   def create_company(request):if request.user.is_superuser:custom_list = Custom.objects.all()compclass_list = Compclass.objects.all()custom_list = …

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