BookmarkSubscribeRSS Feed
SOORISAS
Calcite | Level 5

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 !

2 REPLIES 2
esjackso
Quartz | Level 8

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

DBailey
Lapis Lazuli | Level 10

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;

hackathon24-white-horiz.png

The 2025 SAS Hackathon has begun!

It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.

Latest Updates

How to Concatenate Values

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 2 replies
  • 1295 views
  • 0 likes
  • 3 in conversation