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 语句必须跟上一个分号(;)。

posted @ 2019-07-02 16:09  Guai人  阅读(4632)  评论(0编辑  收藏  举报