我的数据库老师让我(在 Oracle 服务器上)写一个查询:选择 2010 年平均得分最高的 groupid
我写:
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)?谢谢。