【发布时间】:2013-04-28 15:28:15
【问题描述】:
我的数据库老师让我(在 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)? 谢谢。
【问题讨论】:
标签: sql select average having rownum