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

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. mong大牛的blog

    MongoDB权威指南(3)-查询1.find方法介绍在不传入参数的情况下,find方法缺省使用  http://www.educity.cn/wenda/389594.html 这个归纳的比较好:可 ...

  2. Rails 5 Test Prescriptions 第7章 double stub mock

    https://relishapp.com/rspec/rspec-mocks/v/3-7/docs/basics/test-doubles 你有一个问题,如果想为程序添加一个信用卡程序用于自己挣钱. ...

  3. 远程使用tomcat8的首页的管理工具

    1.在%Tomcat_Home%/conf/Catalina/localhost中新建manager.xml,内容如下 <Context privileged="true" ...

  4. bzoj1054: [HAOI2008]移动玩具 状压+爆搜即可

    题意:在一个4*4的方框内摆放了若干个相同的玩具,某人想将这些玩具重新摆放成为他心中理想的状态,规定移动时只能将玩具向上下左右四个方向移动,并且移动的位置不能有玩具,请你用最少的移动次数将初的玩具状态 ...

  5. Hadoop1.2.1完全分布模式安装教程

    假设有三台机器,它们的IP地址和对应的主机名为: 192.168.12.18           localhost.localdomain 192.168.2.215           rhel5 ...

  6. ionic2常见问题——cordova使用Gradle构建下载maven太慢,使用阿里云镜像

    问题描述 当我们写完ionic2项目准备打包app时(暂时介绍android) 执行命令ionic build android的时候下载maven太慢,cmd命令行工具来下载经常会出现假死状态(下载超 ...

  7. JavaScript运算符:递增和递减(++i,--i 和 i++,i-- 的区别)

    递增和递减操作符直接借鉴自C,而且各有两个版本:前置型 (递增 ++i ,递减 --i )和 后置型 (递增 i++ ,递减 i-- ).书本上对两者的定义是:前置型应该位于要操作的变量之前,而后置型 ...

  8. ubuntu下的wps office for linux

    今天修改老师给的论文,也没备份,悲剧的一幕发生了,原来用的word在ubuntu里打开,结果图片显示不出来,也不知怎么修复,哭死... 网上搜索答案,一位热心的网页推荐我用wps office for ...

  9. Windows同时安装python3和python2

    Windows同时安装python3和python2 https://www.cnblogs.com/shanhua-fu/p/6912683.html Windows7 下python3和pytho ...

  10. Linux性能评估命令

    Linux性能评估工具 https://www.cnblogs.com/dianel/p/10085454.html Linux性能评估工具 目录 介绍 负载:uptime 查看内核的信息: dmes ...