第一题
自测
同学类.objects.annotate(avg=Avg(成绩表名小写__平均成绩)).filter(avg__gt=60)
同学与成绩是一对多
多方在成绩表
答案
第二题
自测
学生类.objects.annotate(subject_num = Count(分数表), score_sum = Sum(分数表__num)).values(‘id’,‘name’,‘subject_num’, '‘score_sum’)
答案
第三题
自测
先查出姓李老师
再查个数
老师表.objects.filter(name__contains='李').count()
答案
第四题
答案
先找到学过李老师的学生
然后进行排除
第五题
》自测
查学生
学生表的分数表的课程id 在 1,2
学生类.objects.annotate(分数类__课程__id__in=[1,2]).values('id','name')
》 答案
结果里面有重复的数据
去除重复
第六题
》自测
查学生表
1 查出学过黄老师课的同学
学生表的分数的课程的老师的名字=黄老师
2 黄老的所有课的数量
老师表的名字=黄老师
老师对象的课程数量
老师.课程类名小写_set.all().count()
3 查出每个学生学习黄老师课的数量
学生类.objects.annotate(成绩__课程__老师__名字=李老师)
成绩__课程
黄老师的课数量
黄老行
老师表.objects.get(姓名=黄老师)
黄老师的课
num = 黄老师.objects.aggregate(num = Count(course))
学生类.objects.annotate(num=Count(分数__课程表__teacher=黄老师) ).filter(num=teacher_num)
》思路步骤
第一步
统计出学生学习了黄老师的课程的数量
第二步
已学习的课程数量与总数量进行比对的一个过滤
第三步 字段的控制