开发者社区 问答 正文

我的线下评测程序

有时与官方的差一点,有时能完全对上。

用sas写的,大家凑合看。

/*成绩测算*/
%macro score(submit_list);
data score_list1;
    set &submit_list;
    by courier_id arrival_time_sub departure;
    if last.courier_id;
run;
proc sql;
    select sum(departure) as normal into :normal from score_list1;
quit;
/*超时web order*/
data score_list2;
    set &submit_list;
    where substr(order_id,1,1)="F" and amount<0;
    ot=arrival_time_sub-720;
    if ot>0;
run;
proc sql;
    select sum(ot*5) as web_ot into :web_ot from score_list2;
quit;
/*超时到达shop*/
proc sql;
    create table score_list3 as
        select a.*,b.pick_time,b.del_time
        from &submit_list a,lib3.shop_order2 b
        where a.order_id=b.order_id;
quit;
data score_list3_1;
    set score_list3;
    where amount>0;
    ot=arrival_time_sub-pick_time;
    if ot>0;
run;
proc sql;
    select sum(ot*5) as shop_ot into :shop_ot from score_list3_1;
quit;
/*shop order del超时*/
data score_list4;
    set score_list3;
    where amount<0;
    ot=arrival_time_sub-del_time;
    if ot>0;
run;
proc sql;
    select sum(ot*5) as shop_del_ot into :shop_del_ot from score_list4;
quit;
data score_sum;
    normal=&normal;
    web_ot=&web_ot;
    shop_ot=&shop_ot;
    shop_del_ot=&shop_del_ot;
    score_sum=sum(of _all_);
run;
proc sql;
    select score_sum from score_sum;
quit;
%mend;
%score(lib3.submit_list);


展开
收起
占飞 2016-07-18 22:18:11 3744 分享 版权
阿里云 AI 助理回答

您的问题似乎与提供的知识库资料不直接相关,这些资料分别涉及查询客户端任务列表、查看自定义弱口令的上传OSS信息,以及获取蜜罐文件上传策略信息。而您提及的"SAS编程"及"成绩测算"似乎是关于统计分析或教育领域的内容,这在当前的知识库中并未涵盖。

如果您需要帮助编写SAS代码来处理成绩测算的问题,我可以尝试提供一个基本框架给您参考,但请注意这将不基于上述知识库内容:

/* 定义宏:成绩测算 */
%macro score(submit_list);
   /* 假设submit_list是一个包含学生成绩数据集名称的变量或参数 */

   /* 创建一个新的数据集用于存储计算后的成绩 */
   data score_list1;
      set &submit_list.; /* 引用传入的数据集 */

      /* 这里添加具体的分数计算逻辑,例如:
         - 计算总分
         - 计算平均分
         - 分数等级划分等
         以下仅为示例,请根据实际需求调整 */
      
      total_score = subject1 + subject2 + subject3; /* 假设有三门科目 */
      average_score = total_score / 3; /* 简单平均分计算 */
      
      /* 可以根据平均分划分等级 */
      if average_score >= 90 then grade = 'A';
      else if average_score >= 80 then grade = 'B';
      else if average_score >= 70 then grade = 'C';
      else if average_score >= 60 then grade = 'D';
      else grade = 'F';

   run;

%mend score;

/* 调用宏,并传入具体的成绩数据集名称 */
%score('students_scores'); /* 假定students_scores是包含原始成绩的数据集名 */

请根据您实际的数据结构和计算需求调整上述代码。如果您的问题更偏向于如何使用阿里云服务进行数据分析或处理特定技术难题,请提供更详细的信息,以便给出更精确的解答。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答分类:
SQL
问答地址: