SELECT name
FROM instructor natural join teaches
WHERE course_id = (SELECT course_id
FROM (SELECT course_id, MAX(mycount)
FROM (SELECT course_id, count(ID) as mycount
FROM takes GROUP BY course_id)));
此查询在oracle中不起作用。它显示single group function
错误。
答案 0 :(得分:0)
你可以通过
获得更多然后尝试并错过一个组SELECT name
FROM instructor natural join teaches
WHERE course_id IN (SELECT course_id
FROM (SELECT course_id, MAX(mycount)
FROM (SELECT course_id, count(ID) as mycount
FROM takes GROUP BY course_id)
GROUP BY course_id));
答案 1 :(得分:0)
你错过了一个小组。 :)
SELECT name FROM instructor
natural join teaches
WHERE course_id =
(SELECT course_id FROM
(SELECT course_id, MAX(mycount) FROM
(SELECT course_id, count(ID) as mycount FROM takes GROUP BY course_id)
group by course_ID) -- don't forget this one!
);
此外,那个外部子查询确实没有做任何事情。您已经为每个course_ID获得了一行,因此max(mycount)将与mycount完全相同。
答案 2 :(得分:0)
l第二级子查询中出现错误:
(SELECT course_id, MAX(mycount)
FROM (SELECT course_id, count(ID) as mycount
FROM takes
GROUP BY course_id)
)
您有一个聚合函数,但没有GROUP BY
。
我还建议你避免NATURAL JOIN
。这只是一个等待发生的错误。隐藏用于连接的密钥是一个坏的东西,这使查询更难理解,更容易出错。
然后,您的查询很难遵循。我建议您提出另一个问题,提供样本数据和预期结果。可能有一种更简单的方式来表达这一点。