绕过无法嵌套聚合器,sql server

时间:2015-10-23 03:14:48

标签: sql sql-server

我将这些元组分组在InstructorNo和CourseNo上,如果教师可以教它,那么教师就会在课程中使用课程。我想选择能够教授相同数量课程的教师,这些教师可以列出可以教授大多数课程的教师。

例如,如果史密斯先生能够教授关系中所有教师的大多数课程,我想选择史密斯先生和其他能够教授相同课程数量的人。

我真正想做的是这样的事情:

select InstructorNo, COUNT(InstCourses.CourseNo) as NoTeachableCourses from ... group by InstructorNo having COUNT(InstCourses.CourseNo) = MAX(COUNT(InstCourses.CourseNo))

但由于嵌套聚合MAX(COUNT...,这是非法的。如何在不能嵌套聚合器的情况下获得此功能?我不确定在给定的查询中我需要选择多少位教师,因此我不确定TOPTOP WITH TIES是否有效。

1 个答案:

答案 0 :(得分:3)

使用TOPTOP WITH TIES

select top(1) with ties InstructorNo, COUNT(InstCourses.CourseNo) as NoTeachableCourses
from
...
group by InstructorNo
order by NoTeachableCourses desc;