美文网首页
Django基础aggregate和annotate方法使用详解

Django基础aggregate和annotate方法使用详解

作者: EverglowLyu | 来源:发表于2021-12-30 13:53 被阅读0次

aggregate()方法详解
aggregate的中文意思是聚合, 源于SQL的聚合函数。Django的aggregate()方法作用是对一组值(比如queryset的某个字段)进行统计计算,并以字典(Dict)格式返回统计计算结果。django的aggregate方法支持的聚合操作有AVG / COUNT / MAX / MIN /SUM 等。

from django.shortcuts import render
from django.db.models import *
from myproject.models import *

# Create your views here.

Student.objects.aggregate(Max('score'))
#取最大分数值
#{'score__max': 99}
Student.objects.aggregate(min=Min('score'))
#取最小分数值
#{'min': 66}
Student.objects.aggregate(sum=Sum('score'))
#取总分数值
#{'sum': 253}
Student.objects.aggregate(avg=Avg('score'))
#取平均分数值
#{'avg': 84.3333}

annotate()方法详解
annotate的中文意思是注释,我觉得是非常地词不达意,一个更好的理解是分组(Group By)。如果你想要对数据集先进行分组然后再进行某些聚合操作或排序时,需要使用annotate方法来实现。与aggregate方法不同的是,annotate方法返回结果的不仅仅是含有统计结果的一个字典,而是包含有新增统计字段的查询集(queryset)。

Student.objects.values('cls').annotate(clsavg = Avg('score'))
#取每个班级的平均分数值
#QuerySet [{'cls': 1, 'clsavg': 93.5}, {'cls': 2, 'clsavg': 66.0}]>
Student.objects.values('cls').annotate(s = Sum('score')).aggregate(m = Max('s'))
#先取每个班级的总数值再取最大的值
#{'m': 187}

相关文章

  • Django基础aggregate和annotate方法使用详解

    aggregate()方法详解aggregate的中文意思是聚合, 源于SQL的聚合函数。Django的aggre...

  • aggregate和annotate方法的使用场景

    Django的aggregate和annotate方法属于高级查询方法,主要用于组合查询,是Django高手们必需...

  • 2021-10-15

    目录 aggregate和annotate方法的使用场景[https://www.cnblogs.com/jeav...

  • aggregation

    aggregate 除了count,默认是使用该属性加方法来命名返回结果的key值,但可以指定 annotate ...

  • Django聚合统计踩坑记

    前端提了个需求,需要统计各版本的使用情况。在网上搜寻一番,发现aggregate和annotate方法可以很简单的...

  • ORM聚合函数

    表关系如下: 平均值-AVG() 使用aggregate和annotate执行AVG(): 相同点:都可以执行聚合...

  • 学习MongoDB(聚合)

    aggregate() MongoDB中聚合的方法使用aggregate()。aggregate() 方法的基本语...

  • mongodb的聚合

    mongodb的聚合 aggregate() 方法 MongoDB中聚合的方法使用aggregate() 语法 a...

  • django的group_by

    django的ORM中并没有单独的group_by方法,而是通过values + annotate的方式来实现gr...

  • 深入理解相机五(硬件抽象层HAL)

    一、Android 基础学习 Activity 使用详解 Service 使用详解 Broadcast 使用详解 ...

网友评论

      本文标题:Django基础aggregate和annotate方法使用详解

      本文链接:https://www.haomeiwen.com/subject/hxvwwltx.html