🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
Quartz | Level 8

## Top 10 list

Dear all,

My data set has 1 char and 1 Num var, the char var has duplicates but the numeriv value for the particular char value will be unque as in given example, I am currently struggling to get the Top 10 count in  num(sorted order ) as shown below pls help!!

Have dataset

name      score

-------      --------

John       2500

john        2000

mell         5000

shawm    4850

Mell         9000

Mike        2500

Mike        1650

Mike        6570

ness        2330

Want data set - Top 3 names

Name

 Mell 14000 Mike 10720 Shawn 4850

1 ACCEPTED SOLUTION

Accepted Solutions
Lapis Lazuli | Level 10

## Re: Top 10 list

Try this....

``````proc sql;
create table WANT as
select
upcase(name) as name,
sum(score) as total_score
from HAVE
group by calculated name order by calculated SCORE desc;
quit;data WANT;  set WANT(obs=10);run;``````

Hope this helps...

3 REPLIES 3
Fluorite | Level 6

## Re: Top 10 list

Hi,

Something like the following will get you the score totals for each name:

``````proc sql;
create table want as
select distinct name, sum(score) as total
from have
group by name
order by total desc ;
quit;``````

You should then be able to write a step to keep only the top 3.

Good luck,

Lee

Ammonite | Level 13

## Re: Top 10 list

Proc Rank could do it in one step e.g.

``````proc rank data=sashelp.class out=want(where=(rank<=3)) descending;
var weight;
ranks rank;
run;``````
Lapis Lazuli | Level 10

## Re: Top 10 list

Try this....

``````proc sql;
create table WANT as
select
upcase(name) as name,
sum(score) as total_score
from HAVE
group by calculated name order by calculated SCORE desc;
quit;data WANT;  set WANT(obs=10);run;``````

Hope this helps...

Discussion stats
• 3 replies
• 9664 views
• 2 likes
• 4 in conversation