Hi All,
I need a output dataset with top 5% of transactions from total transaction amount to give promotional offers to the top 5% customers.
Please help !
Not sure its clear what you are asking about. Are you wanting the top 5% of customers from the top 5% of transactions? Or do you want the top 5% of customers based on all transactions. And you didnt not mention how to define the "top". Is it total Money, number of items ordered, number of orders, etc... .
What ever the definition is there are many ways to get at what you want. Something like this should help you:
proc sql noprint;
create table test as
select make, sum(msrp) as amt format=dollar10.
from sashelp.cars
group by make
order by calculated amt desc
;
select sum(amt) , round(sum(amt)*.05,1) into :tamt, :tpct
from test
;
Create table out as
select make, amt
from test
where amt > &tpct
;
quit;
%put &tamt &tpct;
EJ
proc sql;
select int(count(*) * .05) as recs
into :Recs
from have;
quit;
proc sql outobs=&recs;
create table offers as
select * from have
order by total_trans_amt desc;
quit;
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 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.