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分组与聚合的主要内容,如果未能解决你的问题,请参考以下文章
使用SQL语言了解Django ORM中的分组(group by)和聚合(aggregation)查询