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;

SAS Innovate 2025: Call for Content

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!

Submit your idea!

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.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

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