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 語句必須跟上一個分號(;)。


免責聲明!

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



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