【发布时间】:2019-10-13 04:16:04
【问题描述】:
在注册“心理学”课程的学生中。他们中有多少人的 GPA > 3?
学生:
student_id* | student_name | student_gender
课程:
course_id* | course_name | course_type
学生课程等级:
student_id | course_id | grade
请注意:
- Student_course_grade 表中的成绩字段是 (5,4,3,2,1) 中的数字,而不是像 (A,B,C,D,E) 这样的字母成绩
- 对于已注册课程但尚未完成的学生,成绩将为空。
- GPA= 平均成绩(学生所有成绩的平均值)
答案:
Select 100*count(case when avg(b.grade) >3 and b.course_name = ‘Psychology’ then 1 else 0)/count(Case when b.course_name = ‘Psychology’ then 1 else O)
From course a left join
student_course_grade b
On a.courseid=b.courseid Join
student c
On c.studentid=b.student.id
Where b.grade is NULL
【问题讨论】:
-
嗨,欢迎来到 stackoverflow!为了帮助我们更好地帮助您,如果您可以提供代码示例或指出您正在尝试解决问题的问题,那就太好了。您可能想查看此页面:stackoverflow.com/help/how-to-ask
-
@乔。 . .您的代码不正确。您的
where仅过滤到没有grade但您正在尝试对列进行计算的行。此外,您还有avg()——没有看起来可疑的group by。