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)

    结果:

  • 相关阅读:
    linq
    存储过程动态显示top条数
    js正则表达式
    WebClient异步下载文件
    C++ socket编程基础(ZT)
    Oracle数据导入导出imp/exp命令 10g以上expdp/impdp命令(转载)
    C#获取各种格式的系统时间
    C++中对sprintf()函数的说明(转)
    史上最全前端面试题(含答案)B篇
    常用正则表达式
  • 原文地址:https://www.cnblogs.com/wangdianchao/p/12741846.html
Copyright © 2011-2022 走看看