在Django中,聚合函数是通过aggregate方法实现的,aggregate方法返回的结果是一个字典

在使用时需要先导入模块from django.db.models import Count,Avg,Max,Min,Sum

假设有一个模型

class Book(models.Model):
name = models.CharField(max_length=100)
pages = models.IntegerField()
price = models.FloatField()
author = models.CharField(max_length=100)
class Meta:
db_table='book'

Avg:求平均值

avgprice=Book.objects.aggregate(Avg('price'))

print(avgprice) 打印结果为{"price__avg":23.0}

默认的别名结构为field__方法小写,如果要自定义返回结果样式,可以将结果赋值给一个关键字参数,例如

avgprice=Book.objects.aggregate(my_avg=Avg('price')),则打印结果为{my_avg":23.0}

可通过print(avgprice.queries)查看系统转化为的原生sql语句(先导入from django.db import connection)

count:获取个数,默认不去重

bookcount = Book.objects.aggregate(book_num=Count('id'))

在count中,如果要过滤重复值,可添加参数distinct,即book_num=Count(book_num='name',distinct=True)

Max 和 Min:最大值和最小值

max_price=Book.objects.aggregate(max_price=Max('price'))

min_price=Book.objects.aggregate(min_price=Min('price'))

Sum:总和

sum=Book.objects.aggregate(sum_price=Sum('price'))

django ORM聚合函数的更多相关文章

  1. Django 数据聚合函数 annotate

    统计各个分类下的文章数 2 周,3 日前 字数 3818 阅读 546 评论 21 在我们的博客侧边栏有分类列表,显示博客已有的全部文章分类.现在想在分类名后显示该分类下有多少篇文章,该怎么做呢?最优 ...

  2. Python - Django - ORM 聚合查询和分组查询

    models.py: from django.db import models # 出版社 class Publisher(models.Model): id = models.AutoField(p ...

  3. django的聚合函数和aggregate、annotate方法使用

    支持聚合函数的方法: 提到聚合函数,首先我们要知道的就是这些聚合函数是不能在django中单独使用的,要想在django中使用这些聚合函数,就必须把这些聚合函数放到支持他们的方法内去执行.支持聚合函数 ...

  4. 75.Python中ORM聚合函数详解:Sum

    Sum:某个字段的总和. 1. 求图书的销售总额,示例代码如下: from django.http import HttpResponse from django.db import connecti ...

  5. 72.Python中ORM聚合函数详解:Avg,aggregate,annotate

    聚合函数: 如果你用原生SQL语句,则可以使用聚合函数提取数据.比如提取某个商品销售的数量,那么就可以使用Count,如果想要知道销售的平均价格,那么就可以使用Avg. 聚合函数是通过aggregat ...

  6. 74.Python中ORM聚合函数详解:Max,Min

    Max和Min:获取指定对象的最大值和最小值. 1. 比如:想要获取Author表中的最大的年龄和最小的年龄.示例代码如下: from django.http import HttpResponse ...

  7. 73.Python中ORM聚合函数详解:Count

    Count:用来求某个数据的个数. 在以下所有的示例中所采用的模型为: from django.db import models # 定义作者模型 class Author(models.Model) ...

  8. $Django 聚合函数、分组查询、F,Q查询、orm字段以及参数

        一.聚合函数    from django.db.models import Avg,Sum,Max,Min,Count,F,Q   #导入    # .查询图书的总价,平均价,最大价,最小价 ...

  9. ORM中聚合函数、分组查询、Django开启事务、ORM中常用字段及参数、数据库查询优化

    聚合函数 名称 作用 Max() 最大值 Min() 最小值 Sum() 求和 Count() 计数 Avg() 平均值 关键字: aggregate 聚合查询通常都是配合分组一起使用的 关于数据库的 ...

随机推荐

  1. centos 下python升级

    https://www.cnblogs.com/leon-zyl/p/8422699.html

  2. 移动开发--viewport

    手机浏览器默认做了2件事情: 一.页面渲染在一个980px(ios,安卓可能有640px或1000多不等)的viewport. 二.缩放 为什么渲染时,要有viewport? 为了排版正确(980px ...

  3. VirtualBox如何扩展虚拟机Ubuntu的硬盘容量-转

    https://blog.csdn.net/ouyang_peng/article/details/53261599 摘录要点: 扩展 VBoxManage modifyhd YOUR_HARD_DI ...

  4. redhat7.5在H3C机器上黑屏无显

    现象:H3C机器上,PXE安装/ISO安装系统,多用户模式启动,过内核启动界面后,屏幕黑屏无显,但是可以通过SSH登陆系统,服务正常 环境:redhat7.5/H3C R4900G3/Purely平台 ...

  5. laravel学习历程

    1.www目录下拉下来一个laravel框架 composer create-project laravel/laravel laravelapp --prefer-dist laravelapp 为 ...

  6. Vuejs核心思想学习笔记

    习Vue已经有一段时间了,但未对其核心思想作自己的总结和理解 Vue核心思想有两个 : 数据驱动和组件化(系统组件) 数据驱动 数据驱动目的是让数据和DOM保持同步, 只要修改了data数据,DOM就 ...

  7. 014-Session服务器状态保持

    开始并为Session赋值:Session[“uName”]=“CNYaoMing”;取值:string strName = Session[“uName”].ToString();销毁(取消/退出) ...

  8. Mongo数据两表关联创建视图示例

    表tblCard: {"cNo":"11","oRDate":ISODate("2017-08-01T00:00:00.000+0 ...

  9. ruby自动化之selenium webGUI

    1.下载ruby语言包,windows下需要安装rubyinstall http://railsinstaller.org/en 2.cmd命令下安装selenium-webdriver gem包 g ...

  10. [4]传奇3服务器源码分析一 SelGate

    1. 2 留存 服务端下载地址: 点击这里