Django自带的ORM如何执行group by(聚合查询)语句(求和、累积、平均)

Django自带的ORM如何执行group by(聚合查询)语句(求和、累积、平均),第1张

概述Django自带的ORM如何执行group by(聚合查询)语句(求和累积、平均)

使用Django的ORM建立了如下Model:

class Book(models.Model):    # 书籍名字    name = models.CharFIEld(max_length=300)    # 书籍页数    pages = models.IntegerFIEld()    # 书籍价格    price = models.DecimalFIEld(max_digits=10, decimal_places=2)    # 书籍作则    authors = models.CharFIEld(max_length=300)    publisher = models.CharFIEld(max_length300)    # 发布日期    pub_date = models.DateFIEld()

现在想查询以字段authors分组,查出每个作者所著所有书的总页书,用SQL语句可以很容易的完成此任务:

SELECT *, SUM(pages) AS total_pagesFROM BookGROUP BY authors;

那么如何用Django自带的ORM接口实现呢?

方法如下:

from django.db.models import Sumresult = Book.objects.values("authors").annotate(total_pages=Sum("pages")).all()

计算每个作者一共写了多少本书籍代码示例:


from django.db.models import Countresult = Book.objects.values("authors").annotate(total=Count("name ")).all()

计算书籍的平均价格代码示例:

from django.db.models import Avgresult = Book.objects.values("authors").annotate(price=Avg("price ")).all()

参考文献:

http://python.usyiyi.cn/documents/django_182/topics/db/aggregation.HTML

总结

以上是内存溢出为你收集整理的Django自带的ORM如何执行group by(聚合查询)语句(求和、累积、平均)全部内容,希望文章能够帮你解决Django自带的ORM如何执行group by(聚合查询)语句(求和、累积、平均)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1198232.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)