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
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
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.