Python之聚合函数

Python 聚合函数

文章目录

  • Python 聚合函数
      • 聚合函数
        • 使用多个聚合函数
        • 结合`annotate`和`values`进行分组聚合
        • 注意事项
      • F表达式和Q表达式
        • F表达式
        • Q表达式
        • 注意事项
    • 视图
      • HTML中的表单概述
      • Django中表单概述
      • ModelForm
        • 关键点
        • 使用示例
          • 创建ModelForm
          • 在视图中使用ModelForm
          • 模板
          • 总结
      • Cookie和Session
        • Django中的Cookie操作
        • Django中的Session操作
      • CSRF
        • CSRF攻击概述
        • 攻击原理
        • 防御措施

聚合函数

在Django中,聚合函数(Aggregation Functions)用于对查询集中的数据进行统计和计算。Django的ORM(对象关系映射)提供了一套完整的聚合API,允许你使用聚合函数对数据库中的数据进行汇总操作,比如计算总和、平均值、最大值、最小值以及计数等。

Django的聚合函数主要通过django.db.models.aggregates模块来实现。以下是一些常用的聚合函数及其用法:

  1. Count:计算某个字段的数量。
from django.db.models import Count
from myapp.models import MyModel
 
# 计算所有对象数量
total_count = MyModel.objects.count()
 
# 计算某个字段非空值的数量
non_null_field_count = MyModel.objects.aggregate(non_null_count=Count('some_field'))

2.Sum:计算某个字段的总和。

from django.db.models import Sum
 
total_sum = MyModel.objects.aggregate(total=Sum('some_numeric_field'))

3.Avg:计算某个字段的平均值。

from django.db.models import Avg
 
average_value = MyModel.objects.aggregate(avg_value=Avg('some_numeric_field'))

4.Max:计算某个字段的最大值。

from django.db.models import Max
 
max_value = MyModel.objects.aggregate(max_value=Max('some_numeric_field'))

5.Min:计算某个字段的最小值。

from django.db.models import Min
 
min_value = MyModel.objects.aggregate(min_value=Min('some_numeric_field'))

6.StdDev:计算某个字段的标准差(Standard Deviation)。

from django.db.models import StdDev
 
std_dev_value = MyModel.objects.aggregate(std_dev=StdDev('some_numeric_field'))

7.Variance:计算某个字段的方差(Variance)。

from django.db.models import Variance
 
variance_value = MyModel.objects.aggregate(variance=Variance('some_numeric_field'))
使用多个聚合函数

你可以在单个查询中同时使用多个聚合函数。

from django.db.models import Count, Sum, Avg, Max, Min
 
result = MyModel.objects.aggregate(
    total_count=Count('id'),
    total_sum=Sum('some_numeric_field'),
    average_value=Avg('some_numeric_field'),
    max_value=Max('some_numeric_field'),
    min_value=Min('some_numeric_field')
)
结合annotate

你可能感兴趣的:(手把手学python,python)