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中引 ...
随机推荐
- php---------字符串转义函数(addslashes,stripslashes)
在PHP中,有两个函数与字符串的转义有关,他们分别是 addslashes 和 stripslashes. addslashes($string), 在指定的预定义字符前添加反斜杠 (\),用于为存储 ...
- Hadoop1.x HDFS系统架构
1. HDFS中的一些概念1.1 数据块1.2 NameNode和DataNode1.2.1 管理者:Namenode1.2.1 工作者:Datanode1.3 Secondary Namenode1 ...
- java基础---->Zip压缩的使用
java中提供了对压缩格式的数据流的读写.它们封装到现成的IO 类中,以提供压缩功能.下面我们开始java中压缩文件的使用. 目录导航: 关于压缩的简要说明 GZIP压缩文件的使用 ZIP压缩文件的使 ...
- timer Compliant Controller project (2)--Project Demonstration
1software flow diagram As we know, Embedded design is the core of Electronic Product Design. Di ...
- Git 学习之 Git Basics
最近在用git,但git学习曲线实在是有点高. 好在找到一个文档 https://www.atlassian.com/git/tutorial/,以下就是学习笔记吧! git init git ini ...
- js 的各种排序算法 -- 待续
链接 function quickSort(arr,l,r){ if(l < r){ var i = l, j = r, x = arr[i]; while(i<j){ while(i&l ...
- 如何在IDEA启动多个Spring Boot工程实例
在我讲解的案例中,经常一个工程启动多个实例,分别占用不同的端口,有很多读者百思不得其解,在博客上留言,给我发邮件,加我微信询问.所以有必要在博客上记录下,方便读者. step 1 在IDEA上点击Ap ...
- CMake与Make
大家都知道,写程序大体步骤为: 1.用编辑器编写源代码,如.c文件. 2.用编译器编译代码生成目标文件,如.o. 3.用链接器连接目标代码生成可执行文件,如.exe. 但如果源文件太多,一个一个编译时 ...
- Yii 入门
跳转到不同module Redirect to module after login Yii $this->redirect( array('/tradesman/default/index') ...
- Windows环境下 PyQt5 如何安装MySql驱动 (PyQt5连接MYSQL时显示Driver not loaded解决方案)
参考文章: https://blog.csdn.net/qq_38198744/article/details/80261695 前文说过如何在Ubuntu环境下 为PyQt5 安装MySql驱动, ...