SAS: Proc SQL学习笔记02

笔记1 

 

SQL中的数据类型转换

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;

输出如下:

按字母排序的变量和属性列表
#变量类型长度输出格式输入格式
1Dest字符3  
4Discount数值8  
3EndDate数值8DATE.DATE.
2StartDate数值8DATE.DATE

 

column modifier

可以使用FORMAT=, LABEL=来指定列的属性,比如

create table t1(Dest char(3) label='Destination City', StartDate num format=date9.);

 

Insert语句的形式

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可以看到表的创建语句,比如使用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='体重(磅)'
  );

 

Dictionary table

类似于DB2的系统表,其中

  • dictionary.tables类似于syscat.tables
  • dictionary.columns类似于syscat.columns
  • dictionary.indexes类似于syscat.indexes

例如要查看一个lib下面的数据集的名子、多少行、多少列、创建日期,可以使用下面的SQL:

 select memname,nobs,nvar,crdate from dictionary.tables where libname='SASHELP';

输出如下图所示:

如果想查看其他信息,可以使用describe table dictionary.tables来查看每个字段的说明。

 

Inner Join与Out Join

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

 

COALESCE函数

这个函数接受一至多个参数,返回第一个非missing的参数。如果只有一个参数,返回这个参数的值。 如果所有参数值都missing,那么返回missing。

示例: COALESCE(., 7, ., ., 42); 结果为7

 

参考资料:

SAS Certified Professional Prep Guide

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值