You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SAS计算区域未按时提交调查的设施占比问题咨询

问题解答

首先,不需要单独创建两个表再进行左连接,可以在单个PROC SQL查询中直接完成目标占比的计算,这样更简洁高效。

优化后的SQL代码

proc sql;
    SELECT 
        Region,
        COUNT(DISTINCT CASE WHEN DaysDiff > 21 AND DaysDiff < 70 THEN Facility END) AS missing_count,
        COUNT(DISTINCT Facility) AS total_eligible_count,
        ROUND(
            (COUNT(DISTINCT CASE WHEN DaysDiff > 21 AND DaysDiff < 70 THEN Facility END) / 
             COUNT(DISTINCT Facility)), 
            0.01
        ) AS missing_ratio
    FROM have
    WHERE DaysDiff < 70  /* 仅统计近10周提交过的机构 */
    GROUP BY Region;
quit;

代码说明

  • 用CASE WHEN条件直接筛选出"超过21天且不足70天未提交"的机构,一次统计出两类机构数量,避免分两次查询。
  • COUNT(DISTINCT Facility)直接获取区域内近10周有提交记录的机构总数。
  • 通过除法计算占比,并用ROUND函数保留两位小数,让结果更直观。

对原代码的补充修正提示

  1. 原数据步第一行set want;应为读取原始调查数据表(比如命名为survey_data),否则逻辑会出错,建议修正:
Data have;
    set survey_data;  /* 替换为你的原始调查数据表名 */
    DaysDiff = intck('day', 调查提交日期, today());  /* 注意变量名要和原始表的列名一致,原代码用的Date需确认实际列名 */
run;
  1. 提取每个机构最新提交记录时,排序需按Facility分组后对Date降序排列,确保拿到最新的提交日期:
proc sort data=have;
    by Facility descending Date;
run;

data have;
    set have;
    by Facility;
    if first.Facility;  /* 取每个机构的第一条(即最新提交)记录 */
run;

内容的提问来源于stack exchange,提问作者NickName

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 23:22:14