笔记1
SAS中的数据类型有character和numeric,因此可以在PROC SQL中指定数据类型为char和num,示例:
create table t1(Dest char(3), StartDate num format=date9.);
也可以指定标准SQL中的格式,SAS会自动转换为character或者numeric类型,比如int, float, decimal, date,都会转换为numeric类型,比如有以下程序
proc sql;
create table work.t1
(Dest varchar(3),
StartDate date,
EndDate date,
Discount float);
quit;
proc contents data=work.t1;
run;
输出如下:
按字母排序的变量和属性列表 | |||||
---|---|---|---|---|---|
# | 变量 | 类型 | 长度 | 输出格式 | 输入格式 |
1 | Dest | 字符 | 3 | ||
4 | Discount | 数值 | 8 | ||
3 | EndDate | 数值 | 8 | DATE. | DATE. |
2 | StartDate | 数值 | 8 | DATE. | DATE |
可以使用FORMAT=, LABEL=来指定列的属性,比如
create table t1(Dest char(3) label='Destination City', StartDate num format=date9.);
Insert有以下3种形式:
1. insert into t1 values('miao','M',23) values ('han','F',22); /*注意,insert多个值不能用逗号隔开,而是用values隔开*/
2. insert into t1 select * from t2;
3. insert into t1 set col1=value1, col2=value2 set col1=value3, col2=value4;
describe table可以看到表的创建语句,比如使用describe table sashelp.class;可以看到SAS LOG中如下输出:
NOTE: SQL table SASHELP.CLASS was created like:
create table SASHELP.CLASS( label='学生数据' bufsize=65536 )
(
Name char(12) label='姓名',
Sex char(4) label='性别',
Age num label='年龄',
Height num label='身高(英寸)',
Weight num label='体重(磅)'
);
类似于DB2的系统表,其中
例如要查看一个lib下面的数据集的名子、多少行、多少列、创建日期,可以使用下面的SQL:
select memname,nobs,nvar,crdate from dictionary.tables where libname='SASHELP';
输出如下图所示:
如果想查看其他信息,可以使用describe table dictionary.tables来查看每个字段的说明。
inner join和out join示意图如下
其中inner join的语法为 select xxx from t1 INNER JOIN t2 on t1.col1=t2.col1;
outer join分为left join, right join和full join,语法和inner join类似,只不过把上面的INNER换成LEFT、RIGHT或者FULL
这个函数接受一至多个参数,返回第一个非missing的参数。如果只有一个参数,返回这个参数的值。 如果所有参数值都missing,那么返回missing。
示例: COALESCE(., 7, ., ., 42); 结果为7
参考资料:
SAS Certified Professional Prep Guide