1. 在 SAS 中使用 sql 語句,使得對於數據的操作會更加地方便。
(1)sql 語句分為增、刪、改、查,就是基本數據的操作
(2)SAS 中的 sql 一般只使用增、查。
2. SAS 中 sql 的增和查
一般的樣式為:
1 proc sql; 2 here is your sql; 3 run;
(1)SAS 中 sql 的查詢
1 data temp; 2 input visit $ visit_dat $; 3 cards; 4 v1 20190201 5 v2 20200304 6 v3 20190825 7 ; 8 run; 9 10 proc sql; 11 select 12 * 13 from 14 work.temp; 15 run;
結果為:
(2)SAS 中 sql 的增加
1 data temp; 2 input visit $ visit_dat $; 3 cards; 4 v1 20190201 5 v2 20200304 6 v3 20190825 7 ; 8 run; 9 10 /* 創建表 */ 11 proc sql; 12 create table visit as 13 select 14 visit 15 from 16 work.temp; 17 run; 18 19 /* 打印創建的表 */ 20 proc print data=visit; 21 run;
結果為:
(3)SAS 中 sql 語句的條件查詢
1 data temp; 2 input visit $ visit_dat $; 3 cards; 4 v1 20190201 5 v2 20200304 6 v3 20190825 7 ; 8 run; 9 10 /* 創建表,含條件語句 */ 11 proc sql; 12 create table visit as 13 select 14 * 15 from 16 work.temp 17 where 18 visit = "v1"; 19 run; 20 21 /* 打印創建的表 */ 22 proc print data=visit; 23 run;
結果為:
(4)SAS 中 sql 的分組查詢
1 data temp; 2 input visit $ visit_dat $; 3 cards; 4 v1 20190201 5 v2 20200304 6 v3 20190825 7 v1 20180431 8 v2 20170902 9 v4 20160826 10 ; 11 run; 12 13 /* 創建表,含分組語句 */ 14 proc sql; 15 create table visit as 16 select 17 * 18 from 19 work.temp 20 group by 21 visit; 22 run; 23 24 /* 打印創建的表 */ 25 proc print data=visit; 26 run;
結果為:
注意:
分組查詢和按條件查詢的區別:
按條件查詢是根據條件,查詢想要得到的結果;
分組查詢的結果是所有數據,但是按照條件分組的。
(5)SAS 中 sql 分組后,按照條件查詢,使用 having 來添加條件
1 data temp; 2 input visit $ visit_dat $ age; 3 cards; 4 v1 20190201 18 5 v2 20200304 21 6 v3 20190825 34 7 v1 20180431 58 8 v2 20170902 23 9 v4 20160826 25 10 ; 11 run; 12 13 /* 創建表,分類語句+條件語句 */ 14 proc sql; 15 create table visit as 16 select 17 * 18 from 19 work.temp 20 group by 21 visit 22 having 23 age>25; 24 run; 25 26 /* 打印創建的表 */ 27 proc print data=visit; 28 run;
結果為:
(6)SAS 中 sql 語句的排序,使用 order by,若是要排序的字段是字符型,則按照首字母的順序
數字的排序
1 data temp; 2 input visit $ visit_dat $ age; 3 cards; 4 v1 20190201 18 5 v2 20200304 21 6 v3 20190825 34 7 v1 20180431 58 8 v2 20170902 23 9 v4 20160826 25 10 ; 11 run; 12 13 /* 創建表,排序語句 */ 14 proc sql; 15 create table visit as 16 select 17 * 18 from 19 work.temp 20 order by 21 age; 22 run; 23 24 /* 打印創建的表 */ 25 proc print data=visit; 26 run;
字符的排序
1 data temp; 2 input visit $ visit_dat $ age type $; 3 cards; 4 v1 20190201 18 a 5 v2 20200304 21 f 6 v3 20190825 34 e 7 v1 20180431 58 c 8 v2 20170902 23 d 9 v4 20160826 25 r 10 ; 11 run; 12 13 /* 創建表,含排序語句 */ 14 proc sql; 15 create table visit as 16 select 17 * 18 from 19 work.temp 20 order by 21 type; 22 run; 23 24 /* 打印創建的表 */ 25 proc print data=visit; 26 run;
(7)SAS 中 sql 語句的 case 使用,使用 case when,這里的case when 只是針對單獨的字段來做判斷
1 data temp; 2 input visit $ visit_dat $ age type $; 3 cards; 4 v1 20190201 18 a 5 v2 20200304 21 f 6 v3 20190825 34 e 7 v1 20180431 58 c 8 v2 20170902 23 d 9 v4 20160826 25 r 10 ; 11 run; 12 13 /* 創建表,區別對待 */ 14 proc sql; 15 create table visit as 16 select 17 visit,visit_dat, 18 case when age>50 then "高齡" 19 when age>25 & age<=50 then "適合" 20 else "低齡" 21 end 22 as age_span,type 23 from 24 work.temp; 25 run; 26 27 /* 打印創建的表 */ 28 proc print data=visit; 29 run;
結果:
注意:
在寫sql語句的時候,每次寫完一條 sql 語句必須跟上一個分號(;)。