我想根据地区显示前10名员工名单。 如果2个员工的地区编号相同,那么它应该通过考虑另一个变量销售来排名。
如果2个员工的地区和销售数量也相同,那么在排名时应该考虑另一个变量。
对于这种情况,Proc排名是否有效或是否有另一种方法来实现此输出?
例如,
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
for dist_num = 2,
lakshmi 2 65 9000 1
for dist_num = 3
ramya 3 54 6900
答案 0 :(得分:0)
因此,对于每个地区,您需要排名前10位,按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语句过滤您想要的任何区域值。