Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Usenet -> c.d.o.server -> Re: Selects only the first 200 records aftering ordering from a table.
Hi Collin,
this solution comes from jurij.modic_at_mf.sigov.mail.si (Jurij Modic):
SELECT a.deptno, a.sal sumsal, ROWNUM ranking FROM
(SELECT deptno, SUM(sal) sal FROM emp GROUP BY deptno) a,
dual
WHERE -1*a.sal = DECODE(dual.dummy(+),'X',0,0)
AND ROWNUM <= 3
/
You are right that ROWNUM is applied before any *explicit* sorting is done (like ORDER BY or GROUP BY), but if Oracle has to perform any *implicit* sorting, then ROWNUM is applied on the sorted resultset! I made use of this fact in my sollution, posted a few days ago (see also below).
All the above comes from Juri.
Colin Woods schrieb:
>
> Folks,
>
> Can anyone help me ?
>
> I have a large table, where I only want to select up to a maximum of 500
> records.
>
> I can't use ROWNUM because I want to perform an ORDER BY on the table
> before taking out the first 500 records.
>
> The statement I has was
>
> SELECT A, B, C
> FROM table
> WHERE Condition
> AND rownum < 500
> ORDER BY C, B
>
> What this select does is select 500 records, and then orders them.
>
> What I want is to order all records first, and then return the first
> 500(after ordering).
>
> Anyoue any ideas ?
>
> P.S. I don't want to use PL/SQL and a CURSOR select if possible !.
>
> THANKS
>
> Colin Woods.
--
Regards
Matthias Gresz :-) Received on Thu Apr 16 1998 - 09:39:03 CDT
![]() |
![]() |