介绍
小编给大家分享一下聚合查询和分组查询是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!
<强>聚合查询强>
总(),它是QuerySet的一个终止子句,意思就是,会返回一个包含一些键值对的字典。
键的名称是聚合值的标识符,值是计算出来的聚合值。键的名称是按照字段和聚合函数的名称自动生成出来的。
用到的内置函数:
得到django.db.models import Avg,,和,,马克斯,Min,计数
,示例:
得到django.db.models import Avg,和,马克斯,分钟数 查询所有书籍的平均价格,最大价格,书的数量 时间=res models.Book.objects.all () .aggregate (Avg(& # 39;价格# 39;),,马克斯(& # 39;价格# 39;),,计数(& # 39;标题# 39;)) 打印(res),, #, {& # 39; price__avg& # 39;:, 56.6, & # 39; price__max& # 39;:,小数(& # 39;87.00 & # 39;),,& # 39;title__count& # 39;:, 5}
可以给聚合值指定一个名称,用于使用该聚合值。
如果你想要为聚合值指定一个名称,可以向聚合子句提供它。
在祝辞祝辞,models.Book.objects.aggregate (average_price=Avg(& # 39;价格# 39;)) {& # 39;average_price& # 39;:, 13.233333}
<强>分组查询强>
示例:
统计每一个出版社的出版的书平均价格
res =, models.Publish.objects.annotate (avg_price=Avg (& # 39; book__price& # 39;)) . values(& # 39;名字# 39;,,& # 39;avg_price& # 39;) 打印(res) #,& lt; QuerySet [{& # 39;名字# 39;:,& # 39;东方出版社& # 39;,,& # 39;avg_price& # 39;:, 46.0},,{& # 39;名字# 39;:,& # 39;南方出版社& # 39;,,& # 39;avg_price& # 39;:, 77.0},,{& # 39;名字# 39;:, & # 39;北方出版社& # 39;,,& # 39;avg_price& # 39;:, 37.0}]在
统计出每个出版社买的最便宜的书的价格
#,& lt; QuerySet [{& # 39;名字# 39;:,& # 39;东方出版社& # 39;,,& # 39;avg_price& # 39;:, 46.0},,{& # 39;名字# 39;:,& # 39;南方出版社& # 39;,,& # 39;avg_price& # 39;:, 77.0},,{& # 39;名字# 39;:, & # 39;北方出版社& # 39;,,& # 39;avg_price& # 39;:, 37.0}]比; res =, models.Publish.objects.annotate (min_price=Min (& # 39; book__price& # 39;)) . values(& # 39;名字# 39;,,& # 39;min_price& # 39;,) 打印(res) #,& lt; QuerySet [{& # 39;名字# 39;:,& # 39;东方出版社& # 39;,,& # 39;min_price& # 39;:,小数(& # 39;44.00 & # 39;)},,{& # 39;名字# 39;:,& # 39;南方出版社& # 39;,,& # 39;min_price& # 39;:,小数 (& # 39;67.00 & # 39;)},,{& # 39;名字# 39;:,& # 39;北方出版社& # 39;,,& # 39;min_price& # 39;:,小数(& # 39;37.00 & # 39;)}]在
统计不止一个作者的图书
res =, models.Book.objects.annotate (author_num=Count(& # 39;作者# 39;)).filter (author_num__gt=1) . values(& # 39;标题# 39;) 打印(res) ,# & lt; QuerySet [{& # 39;标题# 39;:,& # 39;西厢记& # 39;}]在
以上是聚合查询和分组查询是什么的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!