Try any of the following three examples (ordered from slowest to fastest):
Code:SELECT /*+ RULE*/ ename, sal FROM scott.emp e1 WHERE 3 >= (SELECT COUNT(sal) FROM scott.emp e2 WHERE e2.sal >= e1.sal) ORDER BY e1.sal DESC; SELECT /*+ RULE*/ emp.ename, emp.sal FROM scott.emp, (SELECT rowid x, -1*sal FROM scott.emp GROUP BY -1*sal, rowid ) e2 WHERE emp.rowid = e2.x AND rownum <= 3 ORDER BY emp.sal DESC; SELECT /*+ RULE*/ emp.ename, emp.sal FROM emp, dual WHERE -1*emp.sal = DECODE(dual.dummy(+),'X',NULL,NULL) AND rownum <= 3 ORDER BY emp.sal DESC




Reply With Quote