Amadeus cookies policy - you'll see this message only once.

Amadeus use cookies on this website. They help us to know a little bit about you and how you use our website, which improves the browsing experience and marketing - both for you and for others. They are stored locally on your computer or mobile device. To accept cookies, continue browsing as normal. Or, go to the privacy policy for more information.


The MAX and MIN functions allow you to easily identify the maximum and minimum values from a selection of variables. However in order to find the second highest value or the bottom 3 values you will need to make use of the SAS 9 functions LARGEST and SMALLEST.

The following examples are based on the data listed below:

data balances; 
  input custid $ bal1 bal2 bal3 bal4 bal5 bal6;
12345  911.00  863.30  896.98 1672.26 1675.20  602.42
12346   62.27   10.28 1377.79 1683.42 1290.92  553.13
12347 1996.54   74.68  253.94  374.02  691.90  593.75
12348 1494.83 1114.74  332.76  505.95     .    963.98
12349  336.61  295.78     .a  1965.40  592.76     .b

Maximum and Minimum

The syntax for the maximum and minimum functions is as follows.

function(list of variables);

Largest and Smallest

The largest and smallest functions have similar syntax.

function(value, list);

Where value is the nth item you want (e.g. 2 for the second largest/smallest) and
list is a list of variables that will be processed.

The following code demonstrates the use of the MAX, MIN, LARGEST and SMALLEST functions.

data balances2;
   set balances;
   maxbal=max(of bal1-bal6);
   minbal=min(of bal1-bal6);
large1=largest(1,of bal1-bal6); large2=largest(2,of bal1-bal6); small1=smallest(1,of bal1-bal6); small2=smallest(2,of bal1-bal6); small3=smallest(3,of bal1-bal6); drop bal:; run;

The following results are produced:

Max, Min, Smallest and Largest Functions

 maxbal    minbal     large1     large2

1675.20    602.42    1675.20    1672.26
1683.42     10.28    1683.42    1377.79
1996.54     74.68    1996.54     691.90
1494.83    332.76    1494.83    1114.74
1965.40    295.78    1965.40     592.76

Max, Min, Smallest and Largest Functions

 small1    small2    small3

602.42    863.30    896.98
 10.28     62.27    553.13
 74.68    253.94    374.02
332.76    505.95    963.98
295.78    336.61    592.76 

Note that where the first argument in the largest and smallest functions is set to '1', the result is the same as the max and min functions. Also note that in this example when evaluating the minimum, the missing values have been ignored.

Handling of missing values

The max and min functions completely exclude missing data from the evaluation however the LARGEST and SMALLEST functions handle missing values in the data by placing any missing values present at the end of the sorted list of variables.

So the LARGEST function will return the maximum data value where a '1' is specified in the first argument, the second largest for a '2' and so on. Once all of the non missing data is referenced the missing values will be returned.

The SMALLEST function will return the lowest value when '1' is specified the second lowest for a '2' and so on. Again once all the non missing values have been referenced the missing values will be returned. The last non missing value in this case will be the highest data value.

The following example demonstrates how the largest and smallest functions deal with missing data values.

data balances3;
   set balances;
   large1=largest(1,of bal1-bal6);
   large6=largest(6,of bal1-bal6);
   small1=smallest(1,of bal1-bal6);
   small6=smallest(6,of bal1-bal6);
   drop bal:;

Generates the following data:

Missing Values with the LARGEST and SMALLEST Functions 
large1 large6 small1 small6
1675.20 602.42 602.42 1675.20 1683.42 10.28 10.28 1683.42 1996.54 74.68 74.68 1996.54 1494.83 . 332.76 . 1965.40 . 295.78 .