Django-8 聚合查询与分组查询

聚合查询与分组查询

聚合查询:

aggregate(*args, **kwargs)

#1.聚合  aggregate:返回值是一个字典
    from django.db.models import Avg,Max,Min,Count
    #问题:查询所有书籍的平均价格,最高价格,最低价格

    ret = Book.objects.all().aggregate(avg_price=Avg('price'),max_price = Max('price'),min_price=Min('price'))
    print(ret)

aggregate()QuerySet 的一个终止子句,意思是说,它返回一个包含一些键值对的字典。键的名称是聚合值的标识符,值是计算出来的聚合值。键的名称是按照字段和聚合函数的名称自动生成出来的。如果你想要为聚合值指定一个名称,可以向聚合子句提供它。

分组查询 :

查询每个部门的的平均薪资

#************************************************聚合与分组查询*****************************************************
    #----------------------聚合  aggregate:返回值是一个字典--------------------------
    from django.db.models import Avg,Max,Min,Count

    # --------------------分组 annotate 返回的是一个queryset-----------------------------
    #查询每个部门的平均薪资

    #sql:SELECT dep AS 部门, AVG(salary) AS 平均薪资 FROM app01_emp GROUP BY dep;


    #ORM
    ret=emp1.objects.values('dep').annotate(平均薪资=Avg('salary'))
    print(ret)

单表分组查询语法总结:

表单模型.objects.values("group by 分组字段").annotate(聚合函数('聚合字段'))

猜你喜欢

转载自www.cnblogs.com/lovepy3/p/10881960.html