Hi,
this is an ipotetic DS
data x;
input a b;
cards;
5 1
6 2
2 4
5 3
6 1
4 2
8 3
9 2
;run;
Is it possible with only one proc SQL calculate count of a and count of a where b=1?
Thank you
I, too, am not sure what you want. The way I interpreted your question I think you are looking for something like:
proc sql;
select (select count(a)
from x
where b eq 1 ) as part_a,
count(a) as all_a
from x
;
quit;
Not sure what you want exactly, but perhaps using SUM will work.
proc sql noprint ;
create table counts as
select distinct A,count(*) as count,sum(b=1) as countb1
from x
group by a
;
quit;
Obs a count countb1
1 2 1 0
2 4 1 0
3 5 2 1
4 6 2 1
5 8 1 0
6 9 1 0
I, too, am not sure what you want. The way I interpreted your question I think you are looking for something like:
proc sql;
select (select count(a)
from x
where b eq 1 ) as part_a,
count(a) as all_a
from x
;
quit;
Thank you Art297. It works!
data x; input a b; cards; 5 1 6 2 2 4 5 3 6 1 4 2 8 3 9 2 ;run; proc sql; select count(*) as count_a, sum(case when(b=1) then 1 else 0 end) as part_a from x; quit;
Ksharp
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.
Find more tutorials on the SAS Users YouTube channel.