【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子句一樣。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM