使用 SAS 显示前 10 名员工

Display Top 10 Associates using SAS

我想显示基于地区的前 10 名同事列表。 如果 2 个员工的地区编号相同,那么它应该通过考虑另一个变量销售额来排名。

如果 2 个员工的区域和销售计数也相同,那么它应该在排名时考虑另一个变量。

对于这种情况,Proc rank 会起作用还是有其他方法可以实现此输出?

例如,

data input;
input assoc_nm dist_num sales_cnt sales_amt;
datalines;

raju 1 59 1000
kumar 1 59 1600    
ramya 3 54 6900    
lakshmi 2 65 9000
;    
run;

dist_num=1,

的输出应该如下
assoc_nm sales_cnt sales_amt rank

kumar     59         1600     1
raju      59         1000     2

对于dist_num=2,

lakshmi 2 65 9000 1

对于dist_num=3

ramya 3 54 6900

因此对于每个区,您想要前 10 名,ranked/ordered 到 sales_cnt,并且在相同的 sales_cnt 内,到 sales_amt。

PROC SORT DATA=input ;
  BY district sales_cnt sales_amt ;
RUN ;

DATA input2 ;
  SET input ;
  BY district sales_amt ;
  IF FIRST.district THEN rank=0 ;
  rank+1 ;
  IF rank LE 10 ;
RUN ;

使用 WHERE 语句简单地过滤您想要的区值。