聚合操作就是对数据库的数值类型操作的方法

avg,sum,max,min,count

select avg(age) from students  # 求年龄平均值

 django中的聚合操作

1.aggregate:返回QuerySet对象 ,聚合操作的结果返回一个字典

Table.object.all().aggregate(Count(字段))

class ModelStudy(View):
'''
聚合操作只能在QuerySet对象操作
Table.object.all(), Table.object.filter(age__gte=18) __gte大于等于18
总之是多个数据的QuerySet集合
   aggregate(Max('age'),Min('age')) 多个聚合操作
'''
def get(self, request):
''' QuerySet.aggregate(Sum("字段名")) '''
print Students.objects.all().aggregate(Max('age'))
print Students.objects.aggregate(Max("age")) # 可简写 比对上面 等同 .all().aggregate print Students.objects.filter(age__gte=18).aggregate(Count("age")) # 大于等于
print Students.objects.filter(age__lt=18).aggregate(Max("age")) # 小于
    
     # Count可以去重统计 ,参数 distinct=True
     print Students.object.aggregate(Count("age", distinct=True)) # 返回结果为 {u'age_avg': 3} age_avg是默认的名字,可以自己指定名字 name=Count('age')
     print Students.object.aggregate(new_name=Count("age")) # {'new_name': 4} 
return HttpResponse("ojbk")

2.annotate 集合查询 。 可以做分组统计

Table.object.values('字段').annotate(Count('字段'))

Table.object.values_list('字段').annotate(Count('字段'))

annotate的聚合结果是针对每行数据,而不是整个查询结果

class ModelStudy(View):

    def get(self, request):
print Students.objects.values("age")
print Students.objects.values("age").annotate(Count('age'))
print Students.objects.values_list("age").annotate(Count('age')) return HttpResponse("ojbk") >>> <QuerySet [{u'age': 20L}, {u'age': 28L}, {u'age': 21L}, {u'age': 10L}, {u'age': 10L}]>
>>> <QuerySet [{u'age': 20L, u'age__count': 1}, {u'age': 28L, u'age__count': 1}, {u'age': 21L, u'age__count': 1}, {u'age': 10L, u'age__count': 2}]>
>>> <QuerySet [(20L, 1), (28L, 1), (21L, 1), (10L, 2)]>

SQL语句:SELECT age,COUNT(age) FROM class_students GROUP BY age

django-聚合操作的更多相关文章

  1. Django -聚合分组,FQ操作, cookie, session

    一. 聚合查询和分组 1. 聚合 aggregate(*args, **kwargs) 对一组数据进行统计分析, 通过对QuerySet进行计算, 返回一个聚合值得字典. arrgregate()中每 ...

  2. django聚合查询

    聚合¶ Django 数据库抽象API 描述了使用Django 查询来增删查改单个对象的方法.然而,有时候你需要获取的值需要根据一组对象聚合后才能得到.这份指南描述通过Django 查询来生成和返回聚 ...

  3. django 表操作

    添加表纪录 # Create your models here. class Book(models.Model): id = models.AutoField(primary_key=True) t ...

  4. Django 数据库操作

    Django 数据库操作 Django运算表达式与Q对象/F对象 1 模型查询 概述: 1 查询集:表示从数据库中获取的对象的集合 2 查询集可以有多个过滤器,通过 逻辑运算符连接 3 过滤器就是一个 ...

  5. django 数据库操作详解

    Django配置使用mysql数据库 修改 settings.py 中的 DATABASES  注意:django框架不会自动帮我们生成mysql数据库,所以我们需要自己去创建. DATABASES ...

  6. Django models 操作高级补充

    Django models 操作高级补充 字段参数补充: 外键 约束取消 ..... ORM中原生SQL写法: raw connection extra

  7. 《Entity Framework 6 Recipes》中文翻译系列 (27) ------ 第五章 加载实体和导航属性之关联实体过滤、排序、执行聚合操作

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 5-9  关联实体过滤和排序 问题 你有一实体的实例,你想加载应用了过滤和排序的相关 ...

  8. MongoDB 聚合操作

    在MongoDB中,有两种方式计算聚合:Pipeline 和 MapReduce.Pipeline查询速度快于MapReduce,但是MapReduce的强大之处在于能够在多台Server上并行执行复 ...

  9. .NET LINQ 聚合操作

    聚合操作      聚合运算从值集合计算单个值. 从一个月的日温度值计算日平均温度就是聚合运算的一个示例. 方法 方法名 说明 C# 查询表达式语法 Visual Basic 查询表达式语法 更多信息 ...

  10. Django数据操作F和Q、model多对多操作、Django中间件、信号、读数据库里的数据实现分页

    models.tb.objects.all().using('default'),根据using来指定在哪个库里查询,default是settings中配置的数据库的连接名称. 外话:django中引 ...

随机推荐

  1. php---------字符串转义函数(addslashes,stripslashes)

    在PHP中,有两个函数与字符串的转义有关,他们分别是 addslashes 和 stripslashes. addslashes($string), 在指定的预定义字符前添加反斜杠 (\),用于为存储 ...

  2. Hadoop1.x HDFS系统架构

    1. HDFS中的一些概念1.1 数据块1.2 NameNode和DataNode1.2.1 管理者:Namenode1.2.1 工作者:Datanode1.3 Secondary Namenode1 ...

  3. java基础---->Zip压缩的使用

    java中提供了对压缩格式的数据流的读写.它们封装到现成的IO 类中,以提供压缩功能.下面我们开始java中压缩文件的使用. 目录导航: 关于压缩的简要说明 GZIP压缩文件的使用 ZIP压缩文件的使 ...

  4. timer Compliant Controller project (2)--Project Demonstration

    1software flow diagram     As we know, Embedded design is the core of  Electronic Product Design. Di ...

  5. Git 学习之 Git Basics

    最近在用git,但git学习曲线实在是有点高. 好在找到一个文档 https://www.atlassian.com/git/tutorial/,以下就是学习笔记吧! git init git ini ...

  6. js 的各种排序算法 -- 待续

    链接 function quickSort(arr,l,r){ if(l < r){ var i = l, j = r, x = arr[i]; while(i<j){ while(i&l ...

  7. 如何在IDEA启动多个Spring Boot工程实例

    在我讲解的案例中,经常一个工程启动多个实例,分别占用不同的端口,有很多读者百思不得其解,在博客上留言,给我发邮件,加我微信询问.所以有必要在博客上记录下,方便读者. step 1 在IDEA上点击Ap ...

  8. CMake与Make

    大家都知道,写程序大体步骤为: 1.用编辑器编写源代码,如.c文件. 2.用编译器编译代码生成目标文件,如.o. 3.用链接器连接目标代码生成可执行文件,如.exe. 但如果源文件太多,一个一个编译时 ...

  9. Yii 入门

    跳转到不同module Redirect to module after login Yii $this->redirect( array('/tradesman/default/index') ...

  10. Windows环境下 PyQt5 如何安装MySql驱动 (PyQt5连接MYSQL时显示Driver not loaded解决方案)

    参考文章: https://blog.csdn.net/qq_38198744/article/details/80261695 前文说过如何在Ubuntu环境下 为PyQt5  安装MySql驱动, ...