Django ORM - 聚合查询学习笔记

什么是聚合查询

聚合查询指的是将多行数据汇总成一个输出结果的查询方式。在 Django ORM 中,我们可以使用 aggregate() 方法进行聚合查询。

常用的聚合函数

在 Django ORM 中,常用的聚合函数有:

  • Sum:对某个字段求和
  • Count:统计某个字段出现的次数
  • Max:求某个字段的最大值
  • Min:求某个字段的最小值
  • Avg:求某个字段的平均值

实例

创建测试数据

pythonCopy Code
from django.db import models class Book(models.Model): name = models.CharField(max_length=100) price = models.DecimalField(max_digits=5, decimal_places=2)

求图书价格总和

pythonCopy Code
from django.db.models import Sum total_price = Book.objects.aggregate(total_price=Sum('price'))['total_price'] print(total_price)

统计图书数量

pythonCopy Code
from django.db.models import Count book_count = Book.objects.aggregate(book_count=Count('id'))['book_count'] print(book_count)

求图书价格的平均值

pythonCopy Code
from django.db.models import Avg avg_price = Book.objects.aggregate(avg_price=Avg('price'))['avg_price'] print(avg_price)

求图书价格的最大值和最小值

pythonCopy Code
from django.db.models import Max, Min max_price = Book.objects.aggregate(max_price=Max('price'))['max_price'] min_price = Book.objects.aggregate(min_price=Min('price'))['min_price'] print(max_price, min_price)

总结

Django ORM 的聚合查询功能非常强大,可以帮助我们轻松地完成各种统计工作。以上是一些常用的聚合函数和实例,读者可以根据自己的需求进行相应的使用。