【SAS ADVANCE】通过COUNT函数实现counting values及HAVING子句

一、 COUNT函数
         在实际统计应用中,需要计算观测值出现的次数,这项功能可以通过COUNT函数来实现,它有下面三种形式和功能:
form you used返回值例子
COUNT(*)整个表或组的行数  select count(*) as Count
COUNT(column)当参数中所选定的列没有缺失值时,输出表或者组中该变量的行数  select count(jobcode) as Count
COUNT(DISTINCT column)该列中distinct values的行数  select count(distinct jobcode) as Count
 

【备注】:

    1. COUNT summary function仅仅count非缺失值,而忽略缺失值。若用户需要计入缺失值,则考虑NMISS函数;

    2. COUNT summary function是唯一一个允许用户使用星号(*)作为参数的summary函数;

    3. 若在PROC SQL后面加上GROUP BY子句,则输出每一个group的行数;

    4. 若COUNT指定的参数列中含有缺失值,PROC SQL会将缺失值看作是一类,这可能导致unexpected results.

 

二、HAVING子句

          在前面我们已经展示了如何通过GROUP BY子句来group数据,例如下面这个例子,这个例子输出一个16行、两列的table,即每一类job code的组内salary平均值。

proc sql;
    select jobcode,
              avg(salary) as AvgSalary  format=dollar11.2
        from sasuser.payrollmaster
       group by jobcode;

        

【SUPPOSE】

       用户想要select only a subset of groups for your query output,也就是说通过一个条件分别筛选每组的数据来输出,这就可以通过在GOURP BY后面加上一个HAVING子句来实现。实际上,HAVING子句的功能与WHERE子句的功能类似,但是WHERE子句只能用于individual rows,而不能放在GROUP BY后面。例如:

proc sql;
    select jobcode,
              avg(salary) as AvgSalary format=dollar11.2
     from sasuser.payrollmaster
    group by jobcode
    having avg(salary)>56000;

【备注】 若用户省去GROUP BY子句,而query code中包含HAVING子句,则HAVING子句和summary函数将整个表看做是一个group,功能与where子句一样。

转载于:https://www.cnblogs.com/chenyn68/p/3916344.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值