zoukankan      html  css  js  c++  java
  • 075: 【Django数据库】ORM聚合函数详解-Sum

    ORM聚合函数详解-Sum:

    Sum :求指定对象的总和。比如要求图书的销售总额。那么可以使用以下代码实现:

    from djang.db.models import Sum
    result = Book.objects.annotate(total=Sum("bookstore__price")).values("name","total")

    以上的代码 annotate 的意思是给 Book 表在查询的时候添加一个字段叫做 total ,这个字段的数据来源是从 BookStore 模型的 price 的总和而来。 values 方法是只提取 name 和 total 两个字段的值。

    不多说了,直接上代码吧:

    # views.py内容:
    def index(request):
        # 所有书的销售总额:
        # total = BookOrder.objects.aggregate(total=Sum("price"))
        # print(total)
        # 每种书的销售总额:
        # books = Book.objects.annotate(total=Sum("bookorder__price"))
        # for item in books:
        #     print(item.name, item.total)
        # print(books.query)
        # 求2019年度销售总额:
        # total = BookOrder.objects.filter(create_time__year=2019).aggregate(sum=Sum("price"))
        # print(total)
        # 求2019年每种书的度销售总额:
        total = Book.objects.filter(bookorder__create_time__year=2019).annotate(sum=Sum("price"))
        for item in total:
            print(item.name, item.sum)
        print(total.query)
        return HttpResponse("success")

     实例截图如下:

     更多的聚合函数请参考官方文

    档:https://docs.djangoproject.com/en/2.0/ref/models/querysets/#aggregation-functions

  • 相关阅读:
    自然拼读
    windws蓝屏解决方案
    chrome
    ubuntu安装英伟达驱动
    ubuntu基础
    kvm(未完成2021-04-26)
    istio
    OpenSSH
    su 与 su -关系
    read命令/ declare/set
  • 原文地址:https://www.cnblogs.com/zheng-weimin/p/10247332.html
Copyright © 2011-2022 走看看