我有下表course
course(idcourse, title, description, price, date, instructor)
而且我想让教练用更少的课程。到目前为止,我可以为每位教师提供他教授的课程数量
SELECT instructor, count(*)
FROM courses
GROUP BY instructor;
我的示例中此查询的结果是这一个:
INSTRUCTOR COUNT(*)
1 5
2 2
7 5
现在我需要让教练用更少的课程。这个特例是2
。
我已尝试使用HAVING count(*) = min(*)
,但它会出现语法错误。
我该怎么办?我应该尝试不同的方法吗?
答案 0 :(得分:1)
您可以使用FETCH FIRST 1 ROWS ONLY
(SQL:2008 standard):
SELECT instructor, count(*)
FROM courses
GROUP BY instructor
ORDER BY 2
FETCH FIRST 1 ROWS ONLY
某些数据库尚不支持此语法,但使用其他语法LIMIT 1
。其他一些人支持TOP 1
,如下所示:
SELECT TOP 1 instructor, count(*)
FROM courses
GROUP BY instructor
ORDER BY 2
请参阅前面引用的wikipedia article中的更多替代语法的广泛列表。
注意:ORDER BY 2
子句将按第二列(升序)对结果进行排序,之后FETCH FIRST
(或替代)子句将结果简化为第一个记录。
答案 1 :(得分:1)
您可以像这样使用having
(至少使用Oracle):
SELECT instructor, count(*) cnt
FROM courses
GROUP BY instructor
HAVING count(*) = (select min(count(*)) from courses group by instructor)