You Asked
Hi Tom,
I have the requirement of selecting top 10 percent for each group based on score for the below data
"GROUPID" "SCORE"
"group1" 13
"group1" 12
"group1" 10
"group1" 12
"group2" 12
"group2" 13
"group2" 16
"group2" 20
"group2" 22
"group2" 24
"group2" 21
"group2" 23
"group2" 22
create table points
(groupid varchar(10),
score number);
insert into points values ('group1', 13);
insert into points values ('group1', 12);
insert into points values ('group1', 10);
insert into points values ('group1', 12);
insert into points values ('group2', 12);
insert into points values ('group2', 13);
insert into points values ('group2', 16);
insert into points values ('group2', 20);
insert into points values ('group2', 22);
insert into points values ('group2', 24);
insert into points values ('group2', 21);
insert into points values ('group2', 23);
insert into points values ('group2', 22);
I tried the below query but i am unable to get any records. Please help me in this regard
select a.groupid, a.score from (
select groupid, score, dense_rank() over (partition by groupid order by score desc) rn,
count(*) over (partition by groupid) cn
from points) a
where a.rn <= 0.1 * a.cn;
Thank you
Raj
and Connor said...
Is this answer out of date? If it is, please let us know via a Comment