Re: TOP TEN LISTS? HELP.
Date: 16 Dec 1994 22:01:05 GMT
Message-ID: <3ct2n1$hp2_at_goodnews.wv.tek.com>
Sunil Mushran <smushran_at_us.oracle.com> wrote:
>
> Actually it is basic...that is, if I got you correct!
>
> select * from table where rownum<11;
>
> will get you the first 10 rows....
>
> mwmaher_at_ACM.ORG wrote:
> >
> > How do you create a listing of the top N items in a table
> > with straight SQL? This seems like such a basic task -
> > until you try it.
> >
> > Thank you in advance.
>
WARNING: This method will no work if you try it with a join that is ordered by a specific column. ORACLE creates the ROWNUM before ordering the output of the join, so the 'where rownum<11' clause will not return the first 10 rows in your ordered join. Example:
TABLE T2: TABLE T1:
COL1 COL2 COL1
---------- ---------- --------
1 90 1
1 80 2
1 70 3
1 50 4
2 50 5
2 70
2 80
2 90
3 90
3 70
4 90
4 80
5 90
select rownum,t1.col1, t2.col2
from t1, t2
where t1.col1 = t2.col1
order by t2.col2
ROWNUM COL1 COL2
---------- ---------- ----------
4 1 50
5 2 50
3 1 70
10 3 70
6 2 70
2 1 80
12 4 80
7 2 80
1 1 90
8 2 90
13 5 90
11 4 90
9 3 90
So the 'where rownum<11' clause would miss the 7th row'
Kenneth Atkins
Financial Data Systems Incorporated (FDSI) Beaverton, OR
email: Kenneth.D.Atkins_at_tek.com (until 2/95)
Received on Fri Dec 16 1994 - 23:01:05 CET
