在Django中,聚合函数是通过aggregate方法实现的,aggregate方法返回的结果是一个字典

在使用时需要先导入模块from django.db.models import Count,Avg,Max,Min,Sum

假设有一个模型

Django中ORM的聚合索引
    


            
Django中ORM的聚合索引
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'
Django中ORM的聚合索引
    


            
Django中ORM的聚合索引

 

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'))

在Django中,聚合函数是通过aggregate方法实现的,aggregate方法返回的结果是一个字典

在使用时需要先导入模块from django.db.models import Count,Avg,Max,Min,Sum

假设有一个模型

Django中ORM的聚合索引
    


            
Django中ORM的聚合索引
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'
Django中ORM的聚合索引
    


            
Django中ORM的聚合索引

 

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'))

相关文章:

  • 2021-10-31
  • 2022-12-23
  • 2021-07-06
  • 2022-12-23
  • 2022-12-23
  • 2021-07-05
  • 2021-08-27
猜你喜欢
  • 2021-06-26
  • 2021-11-04
  • 2021-08-09
  • 2022-02-16
  • 2022-12-23
  • 2021-09-27
  • 2022-12-23
相关资源
相似解决方案