/* Putting it all together */
/* First, a macro variable that allows us to */
/* easily change the column we want to use   */
/* in just one place                         */
%let mpgVar = mpg_city; /* or mpg_highway */

/* Next, a PROC SQL step to calculate the */
/* average value across MAKEs             */
proc sql noprint;
create table work.example4 as
  
select make, 
         avg(&mpgVar) 
as avg_mpg format 4.2     
  
from sashelp.cars
  
where origin="USA"  
  
group by make
  
order by avg_mpg desc;

  
/* new instruction: count the "makes" and store */
  
/* in a macro variable named "howMany"          */
  
select count(distinct make) into :howMany
  
from sashelp.cars
  
where origin="USA";
quit;

/* Now, use the new data table and macro values */
/* in a report                                  */
/* This title and PRINT step create a tabular   */
/* view of the data                             */
title "Analyzed %sysfunc(trim(&howMany)) values of Make";
proc print data=work.example4 
    
label noobs;
  
var make avg_mpg;
  label avg_mpg="Average &mpgVar";
run;

/* This SGPLOT step creates a vertical bar      */
/* chart of the data                            */
title/* clear title */
ods graphics / width=600 height=400;
proc sgplot data=work.example4;
  vbar make / response=avg_mpg;
  xaxis label="Make";
  
yaxis label="Average &mpgVar";
run;