zoukankan      html  css  js  c++  java
  • 【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子句一样。

  • 相关阅读:
    外部排序分析
    C++读写CSV文件
    springMVC之annotation优化
    用Scertify Professional实现代码审查
    flash与字符串:字符串与属性
    题目描述:字符串查找
    matlab遗传算法
    开发传感器应用
    Java 高效 MVC & REST 开发框架 JessMA v3.2.1 即将发布
    基于drools创建自己的关系操作符
  • 原文地址:https://www.cnblogs.com/chenyn68/p/3916344.html
Copyright © 2011-2022 走看看