如何取出分組最大值, 最小值, 總和, 平均數, 及各分組各有多少筆?
data d;
input id name$ price;
cards;
1 A 10
1 A 12
1 A 9
1 A 3
2 B 4
2 B 5
2 B 6
2 B 7
8 C 1
8 C 1
8 C 3
;
run;

 

* 只要用到內部 function min(), max(), avg(), count(),sum(), 再加上 group by 指令, 就可以辦到 ;

proc sql;
create table st as
select a.*, sum(price) as sPrice, max(price) as maxPrice, min(price) as minPrice, avg(price) as avgPrice, count(price) as cnt
from d as a
group by id;

/* 使用 distinct 在上面例子是沒有作用的, 因為只要 price 不一樣, 每個row 就有不同的值, 就算ID 是一樣的就會留下多筆, C有2筆一樣的price, 會少一筆, 只剩10筆(d 原有11筆) */

proc sql;
create table st2 as
select distinct id, name, sPrice, maxPrice, minPrice, avgPrice, cnt
from st as a
group by id;

#SQL 上 distinct 與 sort 的 nodupkey 是類似的.

 

相關文:

1. [SAS] 問題集: 常見問題及解決方法

2. SAS PROC SQL

3SAS data 問題處理方法 及 問題集

4. [Data Step][Sas] 徹底研究 DATA STEP 運作原理及觀念

5. SAS Proc IML sample: 好用的 IML 例子.

6. SAS PROC SQL

7.[Cartesian product] 合併Merge 相關概念, 資料庫, sql,

8. SAS 文字數字互轉, 時間相關, 各種常用格式


 

 

 

文章標籤
全站熱搜
創作者介紹
創作者 cianfen 的頭像
cianfen

cianfen的部落格

cianfen 發表在 痞客邦 留言(0) 人氣(2)