给定以下数据:
课程编号 | 教师编号 | 最低分数 | 最高分数 |
---|---|---|---|
1 | 1 | 7 | 8 |
2 | 2 | 5 | 6 |
3 | 2 | 5 | 7 |
4 | 3 | 5 | 8 |
5 | 3 | 6 | 7 |
6 | 4 | 5 | 6 |
7 | 4 | 4 | 6 |
8 | 4 | 5 | 7 |
使用Postgresql,我需要编写一个查询来:
选择所有教授过2门不同的课程X和Y的老师,其中课程X的最低成绩与课程Y的最高成绩之间的差异大于2。
因此,只有4号教师应该被选中。
我尝试了以下内容:
SELECT Teacher_ID, MAX(Maximum_grade), MIN(Minimum_grade)
FROM dataset
GROUP BY Teacher_ID
HAVING count(Teacher_ID) > 1 AND (MAX(Maximum_grade) - Min(Minimum_grade)) > 2;
这选择了教师3和4,这不应该发生。
我猜这是因为我写的代码将课程4的最低成绩与同一课程的最高成绩进行了比较,这是不应该发生的。
我不知道如何改进我的代码以获得所需的结果,任何帮助都将不胜感激。
max_grade(X)-min_grade(X) > 2
而不是根据你的要求检查max_grade(X)-min_grade(Y) > 2
。 - vicki