django-聚合操作
聚合操作就是对数据库的数值类型操作的方法
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-聚合操作的更多相关文章
- Django -聚合分组,FQ操作, cookie, session
一. 聚合查询和分组 1. 聚合 aggregate(*args, **kwargs) 对一组数据进行统计分析, 通过对QuerySet进行计算, 返回一个聚合值得字典. arrgregate()中每 ...
- django聚合查询
聚合¶ Django 数据库抽象API 描述了使用Django 查询来增删查改单个对象的方法.然而,有时候你需要获取的值需要根据一组对象聚合后才能得到.这份指南描述通过Django 查询来生成和返回聚 ...
- django 表操作
添加表纪录 # Create your models here. class Book(models.Model): id = models.AutoField(primary_key=True) t ...
- Django 数据库操作
Django 数据库操作 Django运算表达式与Q对象/F对象 1 模型查询 概述: 1 查询集:表示从数据库中获取的对象的集合 2 查询集可以有多个过滤器,通过 逻辑运算符连接 3 过滤器就是一个 ...
- django 数据库操作详解
Django配置使用mysql数据库 修改 settings.py 中的 DATABASES 注意:django框架不会自动帮我们生成mysql数据库,所以我们需要自己去创建. DATABASES ...
- Django models 操作高级补充
Django models 操作高级补充 字段参数补充: 外键 约束取消 ..... ORM中原生SQL写法: raw connection extra
- 《Entity Framework 6 Recipes》中文翻译系列 (27) ------ 第五章 加载实体和导航属性之关联实体过滤、排序、执行聚合操作
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 5-9 关联实体过滤和排序 问题 你有一实体的实例,你想加载应用了过滤和排序的相关 ...
- MongoDB 聚合操作
在MongoDB中,有两种方式计算聚合:Pipeline 和 MapReduce.Pipeline查询速度快于MapReduce,但是MapReduce的强大之处在于能够在多台Server上并行执行复 ...
- .NET LINQ 聚合操作
聚合操作 聚合运算从值集合计算单个值. 从一个月的日温度值计算日平均温度就是聚合运算的一个示例. 方法 方法名 说明 C# 查询表达式语法 Visual Basic 查询表达式语法 更多信息 ...
- Django数据操作F和Q、model多对多操作、Django中间件、信号、读数据库里的数据实现分页
models.tb.objects.all().using('default'),根据using来指定在哪个库里查询,default是settings中配置的数据库的连接名称. 外话:django中引 ...
随机推荐
- js中字符串处理成数字的方法
<script> var a="11.1111"; var b="12.2222"; //第一种方法:乘以1的方法 //alert(a*1+b*1) ...
- 在ubuntu16上进行nginx+uwsgi+django部署的简要步骤
网上有很多部署教程,说了一大堆,遇到坑还是要自己一个个解决,这里有几个比较重要的坑大家一定要注意. 1.首先要安装python和python-dev环境,如果没有安装python-dev后面安装有些依 ...
- BootStrap使用
BootStrap简单使用 <深入理解BootStrap>这本书对BootStrap进行了全面的讲解包括设计思想以及源码解析对没有接触过的很有帮助 BootStrap可以说是最简单的一类框 ...
- css中用#id.class的形式定义样式,为什么这样用,不直接写成.class.代码如下:#skin_0.selected{}这种的
<ul class="skin"> <li id="skin_0" title="蓝色" class="sele ...
- SpringBoot启动报:Caused by: java.lang.IllegalArgumentException: At least one JPA metamodel must be present!
使用spring boot对项目改造,启动报错: Caused by: java.lang.IllegalArgumentException: At least one JPA metamodel m ...
- CH1806 Matrix
题意 描述 给定一个M行N列的01矩阵(只包含数字0或1的矩阵),再执行Q次询问,每次询问给出一个A行B列的01矩阵,求该矩阵是否在原矩阵中出现过. 输入格式 第一行四个整数M,N,A,B. 接下来一 ...
- java设计模式--七大原则
2016-05-14 20:45:38 设计模式到底是五大.六大还是七大,一直傻傻分不清楚,网上总是有说那些原则可以归为一个,我纠结了半天,突然发现自己是舍本逐末了,只要清楚这些原则的设计思想,其他的 ...
- hibernate流程图
流程图: 作者: IT程序狮 链接:http://www.imooc.com/article/1296来源:慕课网
- Django models中关于blank与null
建立一个简易Model class Person(models.Model): GENDER_CHOICES=( (1,'Male'), (2,'Female'), ) name=models.Cha ...
- 3——FFMPEG之解复用器-----AVInputFormat(转)
1. 数据结构: AVInputFormat为FFMPEG的解复用器对象,通过调用av_register_all(),FFMPEG所有的解复用器保存在以first_iformat为链表头的链表中,且还 ...