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 的增加
data temp;
input visit $ visit_dat $;
cards;
v1 20190201
v2 20200304
v3 20190825
;
run;
/* 创建表 */
proc sql;
create table visit as
select
visit
from
work.temp;
run;
/* 打印创建的表 */
proc print data=visit;
run;
结果为:
(3)SAS 中 sql 语句的条件查询
data temp;
input visit $ visit_dat $;
cards;
v1 20190201
v2 20200304
v3 20190825
;
run;
/* 创建表,含条件语句 */
proc sql;
create table visit as
select
*
from
work.temp
where
visit = "v1";
run;
/* 打印创建的表 */
proc print data=visit;
run;
结果为:
(4)SAS 中 sql 的分组查询
data temp;
input visit $ visit_dat $;
cards;
v1 20190201
v2 20200304
v3 20190825
v1 20180431
v2 20170902
v4 20160826
;
run;
/* 创建表,含分组语句 */
proc sql;
create table visit as
select
*
from
work.temp
group by
visit;
run;
/* 打印创建的表 */
proc print data=visit;
run;
结果为:
注意:
分组查询和按条件查询的区别:
按条件查询是根据条件,查询想要得到的结果;
分组查询的结果是所有数据,但是按照条件分组的。
(5)SAS 中 sql 分组后,按照条件查询,使用 having 来添加条件
data temp;
input visit $ visit_dat $ age;
cards;
v1 20190201 18
v2 20200304 21
v3 20190825 34
v1 20180431 58
v2 20170902 23
v4 20160826 25
;
run;
/* 创建表,分类语句+条件语句 */
proc sql;
create table visit as
select
*
from
work.temp
group by
visit
having
age>25;
run;
/* 打印创建的表 */
proc print data=visit;
run;
结果为:
(6)SAS 中 sql 语句的排序,使用 order by,若是要排序的字段是字符型,则按照首字母的顺序
数字的排序
data temp;
input visit $ visit_dat $ age;
cards;
v1 20190201 18
v2 20200304 21
v3 20190825 34
v1 20180431 58
v2 20170902 23
v4 20160826 25
;
run;
/* 创建表,排序语句 */
proc sql;
create table visit as
select
*
from
work.temp
order by
age;
run;
/* 打印创建的表 */
proc print data=visit;
run;
字符的排序
data temp;
input visit $ visit_dat $ age type $;
cards;
v1 20190201 18 a
v2 20200304 21 f
v3 20190825 34 e
v1 20180431 58 c
v2 20170902 23 d
v4 20160826 25 r
;
run;
/* 创建表,含排序语句 */
proc sql;
create table visit as
select
*
from
work.temp
order by
type;
run;
/* 打印创建的表 */
proc print data=visit;
run;
(7)SAS 中 sql 语句的 case 使用,使用 case when,这里的case when 只是针对单独的字段来做判断
data temp;
input visit $ visit_dat $ age type $;
cards;
v1 20190201 18 a
v2 20200304 21 f
v3 20190825 34 e
v1 20180431 58 c
v2 20170902 23 d
v4 20160826 25 r
;
run;
/* 创建表,区别对待 */
proc sql;
create table visit as
select
visit,visit_dat,
case when age>50 then "高龄"
when age>25 & age<=50 then "适合"
else "低龄"
end
as age_span,type
from
work.temp;
run;
/* 打印创建的表 */
proc print data=visit;
run;
结果:
注意:
在写sql语句的时候,每次写完一条 sql 语句必须跟上一个分号(;)。
页:
[1]