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项目在IIS10上

    系统及软件版本 Windows Server 2012 Standard IIS 8.0 Anaconda3 4.0.0 64位 (搭载python3.5.1) Django 1.10.1 首先确保自己的django网站在服务器上可以通过命令行 runserver 正常运行。 2. IIS配置 添加角色与功能 在服务器管理器中,添加角色与功能 添加角色与功能…

    Django 2023年4月16日
    00
  • Django REST Framework API Guide 02

    本节大纲   1、Generic Views   2、ViewSets      1、Generic Views CBV的主要的一个优点就是极大的允许了对于代码的从用。自然,rest framework取其优势,提供了很多可以重构的视图。rest framework 提供的 Generic Views可以让你很快速的构建跟数据库模型映射紧密的API视图。 如…

    Django 2023年4月10日
    00
  • 【开源】最近写了一个简单的网址导航网站

    前言 随着团队的成长,要管理的项目或使用的内部系统越来越多,很多内部系统都没有域名,使用IP+端口,很难记。 为了解决这个痛点,我抽空写了个导航网站~ 目前用下来效果还不错,可以基本完美的解决这个问题。 项目名称是 SiteDirectory ,代码在 Github 开源了: https://github.com/Deali-Axy/SiteDirector…

    2023年4月10日
    00
  • 虚拟环境下搭建一个Django项目

    下面是虚拟环境下搭建Django项目的攻略: 安装虚拟环境 在终端中输入以下命令来安装虚拟环境: $ pip install virtualenv 创建虚拟环境 在终端中输入以下命令来创建虚拟环境: $ virtualenv myenv 其中myenv是你要创建的虚拟环境的名字。 激活虚拟环境 在终端中输入以下命令来激活虚拟环境: $ source myen…

    Django 2023年5月16日
    00
  • Django+mysql配置与简单操作数据库实例代码

    那我就来详细讲解一下“Django+mysql配置与简单操作数据库实例代码”的完整攻略。 配置Django和MySQL 首先,我们需要在Django项目中配置MySQL。下面是配置方法,可以在settings.py文件中添加以下代码: DATABASES = { ‘default’: { ‘ENGINE’: ‘django.db.backends.mysql…

    Django 2023年5月16日
    00
  • 利用Python web框架Django实现py-faster-rcnn demo实例

    —作者疆,未经允许,严禁转载,违权必究— —欢迎指正,需要源码和文件可站内私信联系— ———–点击此处链接至博客园原文———–   功能说明:利用Python web框架Django,将faster-rcnn的demo程序以网页形式展现出来,简而言之是基于B-S架构的编程,直观地以网页形式展示目标检测的功能。 运行…

    Django 2023年4月13日
    00
  • Django Rest Framework之用户频率/访问次数限制

      settings.py: REST_FRAMEWORK = { ‘DEFAULT_THROTTLE_CLASSES’:[‘api.utils.mythrottle.UserThrottle’,] ‘DEFAULT_THROTTLE_RATES’: { ‘未认证用户’: ’10/m’, ‘已认证用户’: ‘100/h’, }, }   mythrottle…

    2023年4月9日
    00
  • django patch 解决 [“‘15428560000’ value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] format.”]

    __init__.py import datetime from django.apps import AppConfig from django.db.models.fields import DateTimeField default_app_config = ‘patch.PatchConfig’ def patch(): def get_db_pre…

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