ORM分组与聚合

Posted fangsheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ORM分组与聚合相关的知识,希望对你有一定的参考价值。

 

技术分享图片

技术分享图片

#########################聚合################################
#查询所有书籍的价格和 字典
ret = Book.objects.all().aggregate(price_sum=Sum("price"))
print(ret)

# 查询所有作者的平均年龄 字典
ret=Author.objects.all().aggregate(sum_age=Avg("age"))
print(ret)

 

#########################分组###############################
‘‘关键点:
    1.QuerySet对象.annotate()
  2.annotate进行分组统计,按前面values中的字段进行分组
  3.annotate()返回值依然是QuerySet对象
‘‘‘
# 查询每一个作者的名称以及出版过的书籍最高价格
ret = Author.objects.values("name").annotate(max_price = Max("book__price")).values("name","max_price")
print(ret)

# 查询每一个出版社的名称以及出过的书籍的平均价格
ret=Publish.objects.values("name").annotate(book_price=Avg("book__price")).values("name","book_price")
print(ret)

# 查询每一本书籍的作者个数
ret=Book.objects.values("title").annotate(count=Count("authors")).values("title","count")
print(ret)

 


















以上是关于ORM分组与聚合的主要内容,如果未能解决你的问题,请参考以下文章

Django ORM - 具有不同选择子句的分组聚合

使用SQL语言了解Django ORM中的分组(group by)和聚合(aggregation)查询

orm聚合查询分组查询F查询和Q查询

ORM 分组和聚合

Django中的聚合/分组查询/F/Q查询/orm执行原生sql语句/ ORM事务和锁

Django(10)ORM聚合查询