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

Is there was a combine the two sql steps below into one?

 

/*Sample data*/
data one;
input x $1. y 1.;
datalines;
a1
a2
a1
b1
b1
;
run;

proc sql;
/*determine count of distinct values of y for each value of x*/
create table two as select x, count(distinct y) as cnt_y
from one
group by x;
/*determine maximum value of distinct value count*/
select max(cnt_y)
from two;
quit;

1 ACCEPTED SOLUTION

Accepted Solutions
novinosrin
Tourmaline | Level 20

Hi @Batman  You could do in one step that still doesn't mean it's a one pass though. For brevity, you could modify the code to-

proc sql;
 select max(cnt_y) 
 from (select count(distinct y) as cnt_y from one group by x);
quit;

However the above is still 2 passes akin to your solution

View solution in original post

1 REPLY 1
novinosrin
Tourmaline | Level 20

Hi @Batman  You could do in one step that still doesn't mean it's a one pass though. For brevity, you could modify the code to-

proc sql;
 select max(cnt_y) 
 from (select count(distinct y) as cnt_y from one group by x);
quit;

However the above is still 2 passes akin to your solution

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 1 reply
  • 1104 views
  • 0 likes
  • 2 in conversation