django ORM聚合函数

在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‘))

原文地址:https://www.cnblogs.com/Forever77/p/10166271.html

时间: 2024-08-24 19:19:49

django ORM聚合函数的相关文章

070:【Django数据库】ORM聚合函数详解-准备工作

ORM聚合函数详解-准备工作: 如果你用原生SQL,则可以使用聚合函数来提取数据.比如提取某个商品销售的数量,那么可以使用count,如果想要知道商品销售的平均价格,那么可以使用avg.聚合函数是通过aggregate方法来实现的.在讲解这些聚合函数的用法的时候,都是基于以下的模型对象来实现的. 创建如下models: from django.db import models class Author(models.Model): """作者模型""&qu

071:【Django数据库】ORM聚合函数详解-Avg

ORM聚合函数详解-Avg: Avg:求平均值.比如想要获取所有图书的价格平均值.那么可以使用以下代码实现: from django.db.models import Avg result = Book.objects.aggregate(Avg('price')) print(result) 以上的打印结果是: {"price__avg":23.0} 其中price__avg的结构是根据field__avg规则构成的.如果想要修改默认的名字,那么可以将Avg赋值给一个关键字参数.示例

072:【Django数据库】ORM聚合函数详解-aggregate和annotate

ORM聚合函数详解-aggregate和annotate: aggregate和annotate的区别: 1.aggregate :返回使用聚合函数后的字段和值.2.annotate :在原来模型字段的基础之上添加一个使用了聚合函数的字段,并且在使用聚合函数的时候,会使用当前这个模型的主键进行分组(group by).比如以上 Sum 的例子,如果使用的是 annotate ,那么将在每条图书的数据上都添加一个字段叫做 total ,计算这本书的销售总额.而如果使用的是 aggregate ,那

075: 【Django数据库】ORM聚合函数详解-Sum

ORM聚合函数详解-Sum: Sum :求指定对象的总和.比如要求图书的销售总额.那么可以使用以下代码实现: from djang.db.models import Sum result = Book.objects.annotate(total=Sum("bookstore__price")).values("name","total") 以上的代码 annotate 的意思是给 Book 表在查询的时候添加一个字段叫做 total ,这个字段

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

支持聚合函数的方法: 提到聚合函数,首先我们要知道的就是这些聚合函数是不能在django中单独使用的,要想在django中使用django聚合函数,就必须把这些聚合函数放到支持他们的方法内,这样才能执行.支持聚合函数的方法有两种,分别是aggregate和annotate,这两种方法执行的原生SQL以及结果都有很大的区别,下面我们以实例操作的方式一一介绍: # 示例模型: class Author(models.Model): """作者模型"""

python 之 Django框架(orm单表查询、orm多表查询、聚合查询、分组查询、F查询、 Q查询、事务、Django ORM执行原生SQL)

12.329 orm单表查询 import os if __name__ == '__main__': # 指定当前py脚本需要加载的Django项目配置信息 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "orm_demo.settings") import django django.setup() # 启动Django项目 from app01 import models #返回QuerySet对象的方法: r

django字段查询参数及聚合函数

字段查询是指如何指定SQL WHERE子句的内容.它们用作QuerySet的filter(), exclude()和get()方法的关键字参数. 默认查找类型为exact. 下表列出了所有的字段查询参数: 字段名 说明 exact 精确匹配 iexact 不区分大小写的精确匹配 contains 包含匹配 icontains 不区分大小写的包含匹配 in 在..之内的匹配 gt 大于 gte 大于等于 lt 小于 lte 小于等于 startswith 从开头匹配 istartswith 不区分

Django ORM常用的函数以及修饰词

函数名称或修饰词 说明 filter() 返回符合指定条件的QuerySet exclude() 返回不符合指定条件的QuerySet ordey_by() 串接到QuerySet之后,针对某一指定的字段进行排序 all() 返回所有的QuerySet get() 获取指定符合条件的唯一元素,如果找不到或有一个以上符合条件,都会产生exception first()/last() 获取第1个和最后一个元素 aggregate() 可以用来计算数据项的聚合函数 exists() 用来检查是否存在某

django 聚合函数

Talk is cheap,show you the code! 聚合函数 Sum的用法: total_sale_num = Saleinfo.filter(product_id="9321374", sku_id=1).aggregate(total_sale_num=Sum('sale_num')).get('total_sale_num') or 0 求出销售信息中的商品id为9321374,规格id为1的销售总数