统计分析所有测试通过。
This commit is contained in:
@@ -37,21 +37,47 @@ def get_class_count(g , db):
|
||||
|
||||
from scores.model.score_model import Score
|
||||
|
||||
def get_score_80(db):
|
||||
sq = ( db.query(Students.id)
|
||||
.join(Score, Score.sid == Students.id)
|
||||
.filter(Score.score < 80 )
|
||||
.group_by(Students.id)
|
||||
.having(func.count(Score.id) > 2 )
|
||||
.all()
|
||||
)
|
||||
|
||||
q = ( db.query(Students.name,ClassInfo.name,Score.score )
|
||||
.join(ClassInfo, ClassInfo.id == Students.class_id)
|
||||
.join(Score, Score.sid == Students.id)
|
||||
.filter(Students.id.in_(sq),Score.score < 80)
|
||||
.all()
|
||||
)
|
||||
def get_excellent_students(db):
|
||||
"""查询所有科目都在80分以上的优秀学生"""
|
||||
# 先查总科目数
|
||||
total_subjects = db.execute(text("SELECT COUNT(*) FROM subject")).scalar()
|
||||
|
||||
# 子查询:找出成绩>=80分的科目数等于总科目数的学生
|
||||
sq = db.query(Students.id) \
|
||||
.join(Score, Score.sid == Students.id) \
|
||||
.filter(Score.score >= 80) \
|
||||
.group_by(Students.id) \
|
||||
.having(func.count(Score.id) == total_subjects) \
|
||||
.subquery()
|
||||
|
||||
# 主查询:返回优秀学生信息
|
||||
q = db.query(Students.id, Students.name, ClassInfo.name.label('class_name'), Score.score) \
|
||||
.join(ClassInfo, ClassInfo.id == Students.class_id) \
|
||||
.join(Score, Score.sid == Students.id) \
|
||||
.filter(Students.id.in_(sq.select()), Score.score >= 80) \
|
||||
.all()
|
||||
return [row._asdict() for row in q]
|
||||
|
||||
|
||||
from scores.model.score_model import Score
|
||||
|
||||
def get_score_80(db):
|
||||
"""查询有两次以上不及格(<60分)的学生"""
|
||||
# 子查询:找出不及格超过2门的学生ID
|
||||
sq = db.query(Students.id) \
|
||||
.join(Score, Score.sid == Students.id) \
|
||||
.filter(Score.score < 60) \
|
||||
.group_by(Students.id) \
|
||||
.having(func.count(Score.id) > 2) \
|
||||
.subquery()
|
||||
|
||||
# 主查询:返回不及格学生信息
|
||||
q = db.query(Students.name, ClassInfo.name.label('class_name'), Score.score) \
|
||||
.join(ClassInfo, ClassInfo.id == Students.class_id) \
|
||||
.join(Score, Score.sid == Students.id) \
|
||||
.filter(Students.id.in_(sq.select()), Score.score < 60) \
|
||||
.all()
|
||||
return [row._asdict() for row in q]
|
||||
|
||||
def get_class_avg_dao(db):
|
||||
|
||||
Reference in New Issue
Block a user