我将这些元组分组在InstructorNo和CourseNo上,如果教师可以教它,那么教师就会在课程中使用课程。我想选择能够教授相同数量课程的教师,这些教师可以列出可以教授大多数课程的教师。
例如,如果史密斯先生能够教授关系中所有教师的大多数课程,我想选择史密斯先生和其他能够教授相同课程数量的人。
我真正想做的是这样的事情:
select InstructorNo, COUNT(InstCourses.CourseNo) as NoTeachableCourses
from
...
group by InstructorNo
having COUNT(InstCourses.CourseNo) = MAX(COUNT(InstCourses.CourseNo))
但由于嵌套聚合MAX(COUNT...
,这是非法的。如何在不能嵌套聚合器的情况下获得此功能?我不确定在给定的查询中我需要选择多少位教师,因此我不确定TOP
或TOP WITH TIES
是否有效。
答案 0 :(得分:3)
使用TOP
或TOP WITH TIES
:
select top(1) with ties InstructorNo, COUNT(InstCourses.CourseNo) as NoTeachableCourses
from
...
group by InstructorNo
order by NoTeachableCourses desc;