помогите убогому

убогий
Дата: 02.08.2005 19:57:36
Есть запрос, который выдает следующие результаты(фио и суммы, отсортивованные по возрастанию):

Иванов Иван Иванович 123
Иванов Иван Иванович 456
Иванов Иван Иванович 789
Иванов Иван Иванович 1123
Иванов Иван Иванович 1456
Иванов Иван Иванович 4789
Петров Петр Петрович 321
Петров Петр Петрович 654
Петров Петр Петрович 987
Петров Петр Петрович 1321
Петров Петр Петрович 3654
Петров Петр Петрович 6789

как сделать так, чтобы 2 последних соответственно наибольших суммы не выводились, т.е. результат должен быть:

Иванов Иван Иванович 123
Иванов Иван Иванович 456
Иванов Иван Иванович 789
Иванов Иван Иванович 1123
Петров Петр Петрович 321
Петров Петр Петрович 654
Петров Петр Петрович 987
Петров Петр Петрович 1321

заранее спасибо.
Denis Popov
Дата: 02.08.2005 20:23:32
create table test (
    name varchar2(64)
  , amount number(9)
);

insert into test (name, amount) values ('Иванов Иван Иванович', 123);
insert into test (name, amount) values ('Иванов Иван Иванович', 456);
insert into test (name, amount) values ('Иванов Иван Иванович', 789);
insert into test (name, amount) values ('Иванов Иван Иванович', 1123);
insert into test (name, amount) values ('Иванов Иван Иванович', 1456);
insert into test (name, amount) values ('Иванов Иван Иванович', 4789);
insert into test (name, amount) values ('Петров Петр Петрович', 321);
insert into test (name, amount) values ('Петров Петр Петрович', 654);
insert into test (name, amount) values ('Петров Петр Петрович', 987);
insert into test (name, amount) values ('Петров Петр Петрович', 1321);
insert into test (name, amount) values ('Петров Петр Петрович', 3654);
insert into test (name, amount) values ('Петров Петр Петрович', 6789);

select name
     , amount
from (select name
           , amount
           , row_number() over (partition by name order by amount desc) rw
      from test
     )
where rw > 2
order by name, rw desc;
убогий
Дата: 02.08.2005 20:32:48
Большое человеческое спасибо!!!