SAS学习笔记
项目需要,最近研究SAS,来完成项目中的评估等功能,小小心得。
之前的项目图标都是用弼杰来完成的,可一个功能完成不了,所以引入了SAS,
看了下SAS环境里面自带的图形实例,确实很强大,而且安装SAS步骤繁复,需要小心再小心。
今天在写SAS代码的时候发现了一个奇怪的现象,SAS和oracle有些标示符是通用的有些好像不可以。
今天的问题主要是group by的问题
问题描述:
有一个比例的表CAOJIE-rate
deptname TYPENAME PUR1 PUR2 PUR3 PUR4 PUR5 PUR6
湖北 A320 1.1000 0.0000 0.0000 0.0000 0.0000 0.0000
湖北 A320 0.0000 1.1000 0.0000 0.0000 0.0000 0.0000
湖北 A320 0.0000 0.0000 1.1000 0.0000 0.0000 0.0000
湖北 A320 0.0000 0.0000 0.0000 1.1000 0.0000 0.0000
湖北 A320 0.0000 0.0000 0.0000 0.0000 1.1000 0.0000
湖北 A320 0.0000 0.0000 0.0000 0.0000 0.0000 1.1000
天津 B737 0.0000 0.0000 0.0000 1.1000 0.0000 0.0000
天津 B737 0.0000 0.0000 1.1000 0.0000 0.0000 0.0000
天津 B737 0.0000 1.1000 0.0000 0.0000 0.0000 0.0000
天津 B737 1.1000 0.0000 0.0000 0.0000 0.0000 0.0000
天津 B737 0.0000 0.0000 0.0000 0.0000 1.1000 0.0000
天津 B737 0.0000 0.0000 0.0000 0.0000 0.0000 1.1000
西南 A320 0.0000 0.0000 0.0000 1.1000 0.0000 0.0000
西南 A320 0.0000 0.0000 1.1000 0.0000 0.0000 0.0000
西南 A320 0.0000 1.1000 0.0000 0.0000 0.0000 0.0000
西南 A320 1.1000 0.0000 0.0000 0.0000 0.0000 0.0000
西南 A320 0.0000 0.0000 0.0000 0.0000 1.1000 0.0000
西南 A320 0.0000 0.0000 0.0000 0.0000 0.0000 1.1000
西南 A340 0.0000 0.0000 1.1000 0.0000 0.0000 0.0000
西南 A340 0.0000 1.1000 0.0000 0.0000 0.0000 0.0000
西南 A340 1.1000 0.0000 0.0000 0.0000 0.0000 0.0000
西南 A340 0.0000 0.0000 0.0000 1.1000 0.0000 0.0000
西南 A340 0.0000 0.0000 0.0000 0.0000 1.1000 0.0000
西南 A340 0.0000 0.0000 0.0000 0.0000 0.0000 1.1000
现在我通过group by语句可以把各个公司的比例
select t.deptname,
t.typename,
sum(t.pur1),
sum(t.pur2),
sum(t.pur3),
sum(t.pur4),
sum(t.pur5),
sum(t.pur6)
from CAOJIE_RATE t
group by t.deptname,/*and */t.typename
结果如下
天津 B737 1.1 1.1 1.1 1.1 1.1 1.1
西南 A320 1.1 1.1 1.1 1.1 1.1 1.1
西南 A340 1.1 1.1 1.1 1.1 1.1 1.1
湖北 A320 1.1 1.1 1.1 1.1 1.1 1.1
ORACLE里面是不支持分组字段中间用and连接,而SAS里面既支持and又支持,但两种情况的结果是截然不同的
,的情况结果和上面结果一样,代码如下
proc sql;
create table transfer.up_f_rate3 as
select deptname,typename, sum(pur1) as fur1,sum(pur2) as fur2,sum(pur3) as fur3,sum(pur4) as fur4,sum(pur5) as fur5,sum(pur6) as fur6
from transfer.up_f_rate
group by deptname,typename;
quit;
and的情况,加不加group by结果一样,如下
proc sql;
create table transfer.up_f_rate3 as
select deptname,typename, sum(pur1) as fur1,sum(pur2) as fur2,sum(pur3) as fur3,sum(pur4) as fur4,sum(pur5) as fur5,sum(pur6) as fur6
from transfer.up_f_rate
group by deptname and typename;
quit;