php聚合函数简书,聚合函数

聚合函数

Django提供了如下的聚合函数:

Avg: 求平均值

Count: 求数量

Max: 求最大值

Min: 求最小值

StdDev: 求标准差

Sum: 求和

Variance:求差额

注:聚合函数通常作为aggregate()方法的查询表达式使用。

1、默认情况下,聚合函数返回的值为:字段名__小写的聚合函数名称

>>> from faps.models import scores

>>> from django.db.models import Avg,Max,Min

>>> scores.objects.aggregate(Avg("yw"),Max("yw"),Min("yw"))

{'yw__max': '99', 'yw__avg': 73.6774193548387, 'yw__min': '100'}

2、查询表达式中指定聚合函数的返回值

>>> scores.objects.aggregate(ywavg=Avg("yw"),ywmax=Max("yw"),Min("yw"))

File "", line 1

SyntaxError: positional argument follows keyword argument

【注】:如果使用别名,必须全部聚合函数都得使用,否则报语法错误

>>> scores.objects.aggregate(ywavg=Avg("yw"),ywmax=Max("yw"),ywmin=Min("yw"))

{'ywavg': 73.6774193548387, 'ywmin': '100', 'ywmax': '99'}

3、结合使用values()和annotate()方法,实现分类汇总,即实现sql中的group by功能

如:按bj分类后计算yw和sx字段的平均值-(返回是一个结果集)

>>> scores.objects.values("bj").annotate(Avg("yw"),Avg("sx"))

'bj': 'class2', 'sx__avg': 44.333333333333336}, {'yw__avg': 69.625, 'bj': 'class3', 'sx__avg': 51.5}]>

遍历返回的结果集

>>> ds=scores.objects.values("bj").annotate(Avg("yw"),Avg("sx"))

>>> for a in ds:

... print(a["bj"],a["yw__avg"],a["sx__avg"])

...

class1 79.58823529411765 55.294117647058826

class2 73.52380952380952 44.333333333333336

class3 69.625 51.5

【注】:在分类汇总时,应注意values()方法应总是在annotate()方法之前,如果位置调换,则得出结果有误

>>> scores.objects.annotate(Avg("yw"),Avg("sx")).values("bj")

'class1'}, {'bj': 'class1'}, {'bj': 'class1'}, {'bj': 'class1'}, {'bj': 'class1'}, {'bj': 'class1'}, {'bj': 'class1'}, {'bj': 'class1'}, {'bj': 'class1'}, {'bj':

'class2'}, {'bj': 'class2'}, {'bj': 'class2'}, '...(remaining elements truncated)...']>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值