zoukankan      html  css  js  c++  java
  • Django_聚合与分组查询

    聚合查询:aggregate(),返回值为一个字典。

    # 导入功能函数
    from django.db.models import Avg, Max, Min, Count
    # 查询全部书籍的平均价格,最大价格,最小价格,价格总和,可以自定义字典的键:aggregate(wdc=Avg("price"))
    ret = models.Book.objects.all().aggregate(Avg("price"), Max("price"), Min("price"), Count("price"))
    print(ret)

    结果:

     分组查询:annotate(),返回值是一个对象。

      单表:

    from django.db.models import Avg, Max, Min, Count
    # 查询每个部门的平均薪水  values("要分组的字段").annotate(要统计的字段)
    ret = models.Wdc.objects.values("dep").annotate(Avg("salary"))
    print(ret)

    结果:

       多表:

    # 查询每一个出版社的名称以及出版的书籍个数
    from django.db.models import Avg, Max, Min, Count
    # 方式一:annotate(Count(表名__要查询的字段))
    ret = models.Publish.objects.values("name").annotate(c=Count("book__title"))
    print(ret)
    # 方式二:以主键分组,最后取出版社的名称和出版社书籍的个数。
    ret = models.Publish.objects.values("nid").annotate(c=Count("book__title")).values("name", "c")
    print(ret)

    结果:

    from django.db.models import Avg, Max, Min, Count
    # 查询每一个作者的出版的最贵的书籍价格以及作者名字。("pk")代表主键。
    ret = models.Author.objects.values("pk").annotate(c=Max("book__price")).values("name", "c")
    print(ret)

    结果:

  • 相关阅读:
    大数据的起步:初学者
    接触区块链
    学习开始了,博客开始了
    hadoop分布式的搭建过程
    Java笔试题
    JavaSCript全局变量与局部变量
    OSGI
    restful
    jersey
    JSP+Servlet+Mybits小例子
  • 原文地址:https://www.cnblogs.com/wangdianchao/p/12741846.html
Copyright © 2011-2022 走看看