查询选修课成绩均在80分以上

img


查询选修课成绩均在80分以上,直接写成SELECT SNO FROM SC WHERE GRADE >80? 不可以么

肯定不行呀,你要理解:选修课成绩均在80分以上的含义,这个表里面存放的数据类似:
101 课程1 40
101 课程2 90
102 课程1 85
102 课程2 87
题目的意思是,只需要把102查询出来,但如果按你的写法,就会查出三条记录:
101
102
102
所以你的写法是错误的。 答案的写法是正确的,先查出所有成绩低于80分的,然后从所有的学号中排除这部分记录,再加上distinct防止重复。

这个是查询均在80以上,某个人有的课在80以上,有的在80以下,这种不要返回。
所以先要按照学号分组

其实这个sql就是一个排除法,把有低于80分的学号找出来,那么没有在这一批学号里边的就是所有成绩大于80分的,
WHERE GRADE >80,这个查询出来有80分以上,80分以下的学号也会查出来

这答案。。为啥不直接 in (>80)的,用not in反而慢