SAS 中的 sql 语句的使用------单表操作
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 语句必须跟上一个分号(;)。