Re: Tricky SQL Problem: Top "n" of queried records
Date: 1998/03/17
Message-ID: <6em5tl$ftg$1_at_nnrp1.dejanews.com>#1/1
In article <6elf5h$l0c$1_at_nnrp1.dejanews.com>,
rtgraf_at_sintec.de wrote:
>
> How can I restrict the result of a SQL query to, say, the top 10 regarding
> some defined order criteria, e.g.
>
> SELECT deptno, sum(salary) FROM emp
> GROUP BY deptno
> <ONLY the top 3 w/regards to sum(salary)>;
>
> I do *not* want the client application to fetch only the first three
records,
> I want the Server to retrieve exactly these rows.
>
> I have a rather quirky solution using a multiply nested subquery (one
nesting
> level per "n" in the topic!)
>
> The problem is in fact a general one and I seem to have read a solution
> somewhere but forgot the source ;-(
>
> -----== Posted via Deja News, The Leader in Internet Discussion ==-----
> http://www.dejanews.com/ Now offering spam-free web-based newsreading
>
top ten pl sql can be obtain at www.orafaq.org.faqmain.htm under faq sql
select a.ordered_column, ......
from table1 a
where 10 >(select count(1)
from table1 b
where b.ordered_column < a.ordered_column)
order by a.ordered_column
or
variable tenth number
declare n number;
cursor c1 is select sal from emp order by sal desc;
begin
open c1;
for n in 1..10 loop
fetch c1 into :tenth
end loop;
close c1;
end;
/
select * from emp
where sal < :tenth
order by sal desc;
/
hopeful this would help.
Ted Chyn
-----== Posted via Deja News, The Leader in Internet Discussion ==----- http://www.dejanews.com/ Now offering spam-free web-based newsreading Received on Tue Mar 17 1998 - 00:00:00 CET
