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;
|