美文网首页django
django查询之聚合函数

django查询之聚合函数

作者: 陆_志东 | 来源:发表于2018-09-01 23:31 被阅读316次

Django 的django.db.models 模块提供以下聚合函数。
警告
SQLite 不能直接处理日期/时间字段的聚合。这是因为SQLite 中没有原生的日期/时间字段,Django 目前使用文本字段模拟它的功能。在SQLite 中对日期/时间字段使用聚合将引发NotImplementedError。
:
在QuerySet 为空时,聚合函数函数将返回None。 例如,如果QuerySet 中没有记录,Sum 聚合函数将返回None 而不是0。Count 是一个例外,如果QuerySet 为空,它将返回0

聚合函数的参数:

所有聚合函数具有以下共同的参数:
function 描述将生成的函数的类属性,函数将会替template中函数占位符
template 类属性,作为格式字符串,描述此函数生成的sql语句,默认为'%(function)s(%(expressions)s)'
arg_joiner 类属性,表示用于连接表达式列表的字符,默认为","
expressions  对模型哪个字段进行聚合,字符串格式的字段名,可以是多个字段
              在填充到template中之前会使用arg_joiner进行join拼接
output_field 当聚合的多个字段拥有相同的值类型,不需要指定output_field ,
             若类型不相同,就需要通过output_field 指定返回的字段类型
**extra  这些关键字参数可以给聚合函数生成的SQL 提供额外的信息。

聚合函数

avg函数

class Avg(expression, output_field=None, **extra):
  返回给定expression 的平均值,其中expression 字段的类型必须为数值。expression指的是模型字段

  默认的别名:<field>__avg
  返回类型:float

示例:
from django.db.models import Func, F
queryset = Students.objects.all()   
queryset.annotate(field_lower=Func(F('field'), function='Avg'))
也可以
queryset.annotate(field_lower=Avg(F('field'))  
# field_lower 是手动指定的返回的字段名,可以通过实例.field_lower 获取平均值

Count函数

class Count(expression, distinct=False, **extra):
  返回与expression 相关的对象的个数。
  默认的别名:<field>__count
  返回类型:int
  有一个可选的参数:
  distinct  如果distinct=True,Count 将只计算唯一的实例。
  它等同于COUNT(DISTINCT <field>) SQL 语句。默认值为False。

Max函数

class Max(expression, output_field=None, **extra):
  返回expression 的最大值。
  默认的别名:<field>__max
  返回类型:与输入字段的类型相同,如果设置了output_field属性则为 output_field 类型

Min函数

class Min(expression, output_field=None, **extra):
  返回expression 的最小值。
  默认的别名:<field>__min
  返回的类型:与输入字段的类型相同,如果提供则为 output_field 类型

StdDev函数

class StdDev(expression, sample=False, **extra):
  返回expression 的标准差。
  默认的别名:<field>__stddev
  返回类型:float
  有一个可选的参数:sample 
  默认情况下,StdDev 返回群体的标准差。但是,如果sample=True,返回的值将是样本的标准差。
  SQLite 没有直接提供StdDev,如果想要使用请百度解决办法

Sum函数

class Sum(expression, output_field=None, **extra):
  计算expression 的所有值的和。
  默认的别名:<field>__sum
  返回类型:与输入的字段相同,如果提供则为output_field 的类型

Variance 函数

class Variance(expression, sample=False, **extra):
  返回expression 的方差。
  默认的别名:<field>__variance
  返回的类型:float
  有一个可选的参数:sample
  默认情况下,Variance 返回群体的方差。但是,如果sample=True,返回的值将是样本的方差。
  SQLite 没有直接提供Variance。使用请百度解决方案

相关文章

  • django查询之聚合函数

    Django 的django.db.models 模块提供以下聚合函数。警告SQLite 不能直接处理日期/时间字...

  • django(7)聚合函数

    聚合函数: 所有的聚合函数都是放在django.db.models下面。 聚合函数不能够单独的执行,需要放在一些可...

  • MySQL常用语句

    添加 删除 修改 查询 聚合函数 子查询 多表查询 WHERE子句

  • 【SQL.基础构建-第三节(3/4)】

    -- Tips:聚合和排序 -- 一、对表进行聚合查询 --1.聚合函数 --(1)5 个常用函数: --①CO...

  • Django 聚合

    Django 聚合 在查询集上生成聚合(aggregate)aggregate()是QuerySet 的一个终止子...

  • MySQL——分组函数、distinct、分组查询、连接查询、子

    MySQL——分组函数、distinct、分组查询、连接查询、子查询 一、分组函数(聚合函数)1、 会自动忽略空值...

  • Django字段查询参数及聚合函数

    字段查询参数及聚合函数 字段查询是指如何指定SQL WHERE子句的内容。它们用作QuerySet的filter(...

  • Django聚合函数

    Django在Django .db中提供了以下聚合函数。 1、Avg:返回平均值 classAvg(express...

  • 数据库查询语句

    条件与逻辑查询 模糊查询 范围查询 排序 聚合函数 分组 连接查询 分页 子查询

  • 05-Mysql数据库02

    mysql数据查询 条件查询 模糊查询 范围查询 判断空 排序 聚合函数 分组 分组要和聚合一起用 分页 连接查询...

网友评论

    本文标题:django查询之聚合函数

    本文链接:https://www.haomeiwen.com/subject/sgqpwftx.html