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

SAS 9.4:如何用嵌套查询统计成员数>1的分组数量

统计成员数大于1的分组数量(SAS SQL实现)

我有一张包含Group ID(分组ID)和Member ID(成员ID)的表,部分分组包含多个Member ID。需要统计成员数大于1的分组数量,计划用嵌套查询实现。最初以为嵌套查询中不能使用GROUP BY和HAVING,后确认SAS 9.4允许在嵌套查询中使用这两个语句,现给出我的查询语句,请验证或优化以得到正确结果(示例中应返回2):

原查询语句:

select count * 
from (select count( groupID) as groupsize from dat_table
        group by  groupID
        having count(mem_id) >1
      ) a;

问题分析与优化

原语句存在两处可修正的点:

  1. 外层查询的count *语法错误,SAS SQL要求写成count(*)
  2. 内层查询中count(groupID)属于冗余计算,我们只需要筛选出符合条件的分组,不需要额外计算分组大小

优化后的查询语句:

select count(*) as group_count
from (
    select groupID
    from dat_table
    group by groupID
    having count(mem_id) > 1
) a;

说明

  • 内层查询按groupID分组,通过having count(mem_id) > 1筛选出成员数大于1的分组
  • 外层查询统计内层结果的行数,即为符合条件的分组数量
  • 如果mem_id存在缺失值,count(mem_id)会自动忽略缺失记录;若需要统计分组内所有行数(包括缺失),可改为count(*)

该语句在SAS 9.4中可正常运行,示例场景下会返回预期结果2。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 06:53:27