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

如何在SAS Enterprise Guide的单条PROC SQL查询中按列分组计算均值

SAS PROC SQL添加分组均值列的实现方案

符合需求的修改后查询

proc sql;
create table work.my_table as 
select 
    ID
    , COUNTRY
    , VALUE
    , AVG(VALUE) OVER (PARTITION BY corrected_country) as MEAN_1 format=8.1
from (
    -- 先修正COUNTRY字段的拼写错误,把变体统一归为FRANCE
    select 
        ID
        , COUNTRY
        , VALUE
        , case 
            when COUNTRY in ('FRAMNCE', 'FRAMCE') then 'FRANCE'
            else COUNTRY
          end as corrected_country
    from library1.table1
)
;quit;

关键逻辑说明

  1. 拼写修正:原始数据里FRAMNCE、FRAMCE是FRANCE的拼写错误,通过子查询的CASE语句将这些变体统一映射为FRANCE,保证分组逻辑匹配你给出的计算规则。
  2. 窗口函数计算均值:使用AVG() OVER (PARTITION BY corrected_country)实现分组均值计算,这个窗口函数会为每一行匹配对应分组的均值,无需额外的分组聚合操作。
  3. 格式控制:通过format=8.1指定均值的显示格式,让输出和期望结果的小数格式一致。

简化版本(不修正拼写)

如果不需要处理拼写错误,仅按原始COUNTRY分组,可用以下代码,但此版本会把FRANCE、FRAMNCE、FRAMCE分成三个独立分组,均值分别为1、2、3,不符合你的期望输出:

proc sql;
create table work.my_table as 
select 
    ID
    , COUNTRY
    , VALUE
    , AVG(VALUE) OVER (PARTITION BY COUNTRY) as MEAN_1 format=8.1
from library1.table1
;quit;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 00:21:26