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

如何在PROC FEDSQL中按Var_A、Var_B最大值进行行断同筛选?

在PROC FEDSQL中实现分组取最大行的断同处理

需求说明

按GROUP字段分组,先筛选每组中Var_A取最大值的行;若同一分组内存在Var_A值相同的多行,则进一步筛选其中Var_B取最大值的行,最终保留GROUP和ID列。

示例输入数据

假设输入数据存储在SAS表test中,数据内容如下:

GROUP ID Var_A Var_B
A     1  2     1
A     2  4     2
B     3  1     3
B     4  1     2
C     5  1     2
C     6  2     1

解决方案:使用窗口函数ROW_NUMBER()

通过窗口函数对每组数据排序并标记行号,筛选目标行是最直观的方法:

PROC FEDSQL;
    CREATE TABLE result AS
    SELECT GROUP, ID
    FROM (
        SELECT 
            GROUP, 
            ID, 
            Var_A, 
            Var_B,
            -- 按GROUP分区,先按Var_A降序、再按Var_B降序排序生成行号
            ROW_NUMBER() OVER (PARTITION BY GROUP ORDER BY Var_A DESC, Var_B DESC) AS rn
        FROM test
    ) t
    -- 筛选每个分组中排第一的行
    WHERE rn = 1;
QUIT;

结果验证

执行上述代码后,result表的内容与期望输出一致:

GROUP ID 
A     2  
B     3  
C     6

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 01:57:08