我的数据库老师让我写一个查询(在Oracle服务器上):选择2010年平均分数最高的组id。
我写了:
SELECT * FROM (
SELECT groupid, AVG(score) average FROM points
WHERE yr = 2010
AND score IS NOT NULL
GROUP BY groupid
ORDER BY average DESC
) WHERE rownum = 1;
我的老师告诉我,这个请求“更好”:
SELECT groupid, AVG(score) average FROM points
WHERE yr = 2010
GROUP BY groupid
HAVING AVG(score) >= ALL (
SELECT AVG(score) FROM points
WHERE yr = 2010
GROUP BY groupid
);
哪个更快/更好?还有什么更好的解决方案(仅适用于Oracle)吗? 谢谢。