SAS PROC SQL按年月统计NRB记录数如何实现单月聚合输出一条结果
解决方法
要实现按年月维度单条输出聚合结果,修改第二段查询逻辑即可,核心问题是缺少GROUP BY分组语句,同时SELECT中包含了非分组维度的多余字段,导致相同年月被拆分为多条记录。
调整要点
- 仅保留年月维度字段
POLICY_VINTAGE作为分组依据,移除不需要的DATE_、POLISA_INFORMACJA字段,若需要同时按保单状态分组可保留并加入GROUP BY子句 - 若要统计唯一NRB的数量,使用
COUNT(DISTINCT NRB)避免重复识别号被多次计数 - 注意WHERE条件中的字段名要与之前生成的字段对齐,原代码中
INFORMATION="U"属于POLISA_INFORMACJA的拼写错误
修正后代码
PROC SQL; /* 第一段查询逻辑保持不变,此处省略原有内容 */ create table PolisyEnd1 as select POLICY_VINTAGE, count(distinct NRB) as NUMBER from PolisyEnd where POLISA_INFORMACJA ="U" group by POLICY_VINTAGE ; Quit;
若需要同时按年月+保单状态分组统计,可使用以下代码:
create table PolisyEnd1 as select POLICY_VINTAGE, POLISA_INFORMACJA, count(distinct NRB) as NUMBER from PolisyEnd group by POLICY_VINTAGE, POLISA_INFORMACJA ;
内容的提问来源于stack exchange,提问作者Przemek Dabek
相关产品推荐
相关产品推荐

