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;
It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.
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.
Ready to level-up your skills? Choose your own adventure.