分组查询

分组查询

公司员工表
这里写图片描述
按照部分分组求平均工资:

SQL语句

select dept,AVG(salary) from employee group by dept;

ORM查询:

from django.db.models import Avg
Employee.objects.values("dept").annotate(avg=Avg("salary").values(dept, "avg")

# 另一个案例:每本书的作者人数:
models.Book.objects.all().annotate(author_num=Count("author"))


# 语法    pk字段 == 主键primary key
模型.objects.values('分组字段').annotate(聚合函数)

模型.objects.values('pk').annotate(c=Count('article__title')).values('title','c')

 

连表分组

这里写图片描述

SQL语句:

select dept.name,AVG(salary) from employee inner join dept on (employee.dept_id=dept.id) group by dept_id;

 

ORM查询:

from django.db.models import Avg

models.Dept.objects.annotate(avg=Avg("employee__salary")).values("name", "avg")

 

posted @ 2018-12-19 23:02  李小样  阅读(65)  评论(0)    收藏  举报