Sas 我需要在Proc sql中找到前5个事务到期日
此代码适用于最高值,但我需要最高5个值Sas 我需要在Proc sql中找到前5个事务到期日,sas,proc-sql,Sas,Proc Sql,此代码适用于最高值,但我需要最高5个值 proc-sql; 将表cash.gO5创建为 选择*,max(交易到期日)作为max1格式=date9。 来自现金。订单号65 按客户名称分组; 退出 PROC-SQL不支持顺序分析函数,如其他风格的SQL中的rank();然而,有很多方法可以让你得到一个组排名。以下是一些您可以使用的选项 选项1:过程等级 proc-rank完全按照它听起来的样子:排序。请注意,如果在SAS 9或SPRE中使用数据,则必须对其进行排序 proc rank data=s
proc-sql;
将表cash.gO5创建为
选择*,max(交易到期日)作为max1格式=date9。
来自现金。订单号65
按客户名称分组;
退出
PROC-SQL
不支持顺序分析函数,如其他风格的SQL中的rank()
;然而,有很多方法可以让你得到一个组排名。以下是一些您可以使用的选项
选项1:过程等级
proc-rank
完全按照它听起来的样子:排序。请注意,如果在SAS 9或SPRE中使用数据,则必须对其进行排序
proc rank data=sashelp.cars
out=want(where=(msrp_rank LE 5))
descending;
by make;
var msrp; /* Variable to rank */
ranks msrp_rank; /* Name of variable holding ranks */
run;
proc sort data=sashelp.cars
out=cars;
by make descending msrp;
run;
data want;
set cars;
by make descending msrp;
if(first.make) then Rank = 0;
Rank+1;
if(Rank LE 5);
run;
选项2:数据步骤
您可以使用数据步骤进行排名。请注意,如果使用SAS 9或SPRE,则必须对数据进行排序
proc rank data=sashelp.cars
out=want(where=(msrp_rank LE 5))
descending;
by make;
var msrp; /* Variable to rank */
ranks msrp_rank; /* Name of variable holding ranks */
run;
proc sort data=sashelp.cars
out=cars;
by make descending msrp;
run;
data want;
set cars;
by make descending msrp;
if(first.make) then Rank = 0;
Rank+1;
if(Rank LE 5);
run;
选项3:simple.topK CAS操作
如果您有Viya,您可以使用CAS操作来快速排列大型数据集。这可以在SAS和Python中与SWAT包一起使用
/* Load sashelp.cars into CAS */
data casuser.cars;
set sashelp.cars;
run;
proc cas;
simple.topk result=r /
table = {caslib='casuser' name='cars' groupby='make'}
casout = {caslib='casuser' name='cars_top_5' replace=true}
aggregator ='max'
bottomK = 0
topK = 5
inputs = {{name='msrp'}}
;
quit;
使用SQL的要求从何而来?