SAS中的SQL语句大全文档格式.docx

上传人:b****6 文档编号:21992879 上传时间:2023-02-02 格式:DOCX 页数:42 大小:30.91KB
下载 相关 举报
SAS中的SQL语句大全文档格式.docx_第1页
第1页 / 共42页
SAS中的SQL语句大全文档格式.docx_第2页
第2页 / 共42页
SAS中的SQL语句大全文档格式.docx_第3页
第3页 / 共42页
SAS中的SQL语句大全文档格式.docx_第4页
第4页 / 共42页
SAS中的SQL语句大全文档格式.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

SAS中的SQL语句大全文档格式.docx

《SAS中的SQL语句大全文档格式.docx》由会员分享,可在线阅读,更多相关《SAS中的SQL语句大全文档格式.docx(42页珍藏版)》请在冰豆网上搜索。

SAS中的SQL语句大全文档格式.docx

FROMfrom-list 

<

WHEREsql-expression>

GROUPBYgroup-by-item<

...group-by-item>

>

HAVINGsql-expression>

ORDERBYorder-by-item<

...order-by-item>

;

这里SELECT:

指定被选择的列

FROM:

指定被查询的表名

WHERE:

子数据集的条件

GROUPBY:

将数据集通过group进行分类

HAVING:

根据GROUPBY的变量得到数据子集

ORDERBY:

对数据集进行排序

2.2SELECT语句的特征

选择满足条件的数据、数据分组、对数据进行排序、对数据指定格式、一次最多查询32个表。

这里还要提到的就是,在SAS系统中,对于表名和变量名一般不超过32个字符,对于库名,文件引用名,格式等不能超过8个字符

2.3Validate关键字

Validate关键字只存在于select语句中、可以在不运行查询的情况下测试语句的语法、检查列名是否合法、对于不正确的查询将打印其消息。

例:

procsql;

validate

selectRegion,Product,Sales

fromsashelp.shoes

whereRegion='

Africa'

NOTE:

PROCSQL语句有有效语法。

quit;

此外,我们还可以用noexec选项也可以用来进行语法测试。

procsqlnoexec;

selectRegion,Product,Sales

10 

whereRegion='

由于NOEXEC选项,未执行语句。

11 

这里提示未执行,未提示错误,说明该语句没有语法错误。

但是如果加入一个sashelp.shoes表里没有字段,这里就会出现错误,例:

12 

13 

selectRegion,Product,Sales,test

14 

15 

ERROR:

以下这些列在起作用的表中没有找到:

test.

16 

2.4查询列

我们可以像2.3那样查询指定列,也可以用*来查询所有列。

procsql;

select*

fromsashelp.shoes;

quit;

这里我们可以用feedback选项来查看到底我们选择了哪些列:

17 

procsqlfeedback;

18 

19 

Statementtransformsto:

selectSHOES.Region,SHOES.Product,SHOES.Subsidiary,SHOES.Stores,SHOES.Sales,SHOES.Inventory,SHOES.Returns

fromSASHELP.SHOES;

20 

这时,我们可以看到从sashelp.shoes表中选择了8个列

2.5消除重复值

我们可以用distinct选项来消除重复值。

例如,我们要得到没有重复的所有地区的名称:

selectdistinctRegion

2.6where子集查询

2.6.1比较运算符

先列出where语句用到的比较运算符:

LT 

<

小于

GT 

>

大于

EQ 

等于

LE 

小于或等于

GE 

大于或等于

NE 

^= 

不等于

例如,我们要查询sales大于100000的所有数据:

wheresales>

100000;

2.6.2in:

只要满足in里的任意一个值,表达式即为真,例如,我们要选择Region在Africa和EasternEurope的所有数据:

whereRegionin('

'

EasternEurope'

);

2.6.3逻辑运算符

OR 

AND 

&

NOT 

 

例如,选择Region在Africa和EasternEurope,且销售额大于100000的所有数据:

)and 

sales>

2.6.4CONTAINS或?

判断某列是否包含指定字符串

例如,选择列Region包含’Afr’的数据:

whereRegion?

'

Afr'

2.6.5ISNULL或ISMISSING:

判断某列数据是否为空

例如,如果找出Region为空的数据:

whereRegionismissing;

注意,这里我们还可以用以下表达式对where语句进行替换。

如果region为数值型变量,则可以用region=.,如果region为字符型变量,则可以用region=‘’进行替换。

2.6.6Betweenand:

选择某一区间的数据

例如选择sales大于100000,但小于200000的所有数据:

wheresalesbetween100000and200000;

2.6.7like:

判断是否能匹配某些字符

例如,选择以region以A开头的所有地区

whereRegionlike'

A%'

这里注意有两类通配符,‘%’可以通配任意个任意字符,‘_’只能通配一个任意字符

2.6.8=*:

类似匹配

这里由于sashelp.shoes里没有符合要求的数据,所有就用书上的例子说明一下吧:

Wherelastname=*‘smith’,出来的结果可能是:

smith,smythe等

2.7表达式

我们可以通过已有的列进行计算来得到新的列,这时用关键词as来给新的列赋列名,例如:

selectRegion,Product,Sales,Stores,Sales/Storesassalesperstores

这时结果就会多一列salesperstores,用来得到该地区该产品每个商店的平均销售量。

这里要注意的是,在创建表达式时,我们还可以在SQL里用到SAS中的除LAG和DIFF之外的所有函数。

这里我们还可以用表达式计算出来的结果来进行子集查询,但一定要记住用calculated关键词。

例如我们要找出商店平均销售量大于5000的数据:

方法一:

whereSales/Stores>

5000;

方法二:

wherecalculatedsalesperstores>

2.8查询结果展示

2.8.1orderby数据排序

默认的排序方式是升序,我们可以用DESC关键词来进行降序排列。

例如以sales降序排列数据:

orderbySalesDESC;

这里提示一下,我们可以用任意多列进行排序,包括表达式结果(不用calculated),但最好是选择的列。

2.8.2LABEL与FORMAT

LABEL:

改变输出变量名的内容

FORMAT:

改变列的值的输出方式

例如,改变salesperstores的label和format

selectRegion,Product,Sales,Stores,

Sales/Storesassalesperstores

label='

salesperstores'

format=dollar12.2

2.9处理SQL常用函数

MEAN或AVG:

均值

COUNT或N或FREQ:

非缺失值个数

MAX:

最大值

MIN:

最小值

NMISS:

缺失值个数

STD:

标准差

SUM:

求和

VAR:

方差

2.9.1求和sum

sum(Sales,Inventory,Returns)astotal

2.9.2求均值avg

avg(Sales)assalesavg

2.9.3分组求均值groupby

selectRegion,

groupbyRegion;

2.9.4计数count

selectRegion,count(*)ascount

2.9.5HAVING数据子集

groupbyRegion

havingcount(*)>

50;

其它的就不多作介绍了,多用用就熟悉了

2.10子查询

2.10.1找出regions平均sales大于全部平均sales的region

havingavg(Sales)>

(selectavg(Sales)fromsashelp.shoes);

2.10.2ANY关键词介绍

ANY(20,30,40) 

最终效果:

20

40

=ANY(20,30,40) 

=20or=30or=40

例如,选择出region为unitedstate的sales小于任意region为africa的sales的数据

selectRegion,Sales

whereRegion='

UnitedStates'

andSales<

any

(selectSalesfromsashelp.shoeswhereRegion='

这个例子没有多少意义,只是说明一下any的用法

2.10.3ALL关键词介绍

ALL(20,30,40) 

例如,选择出region为unitedstate的sales小于所有region为africa的sales的数据

all

2.10.4EXISTS与NOTEXISTS

where 

exists

(select*fromsashelp.orsales);

SAS中的SQL语句完全教程之二:

数据合并与建表、建视图

数据合并与建表、建视图索引等

1连接joins分为内连接innerjoins和外连接outerjoins

内连接:

仅返回匹配的数据,最多可以有32个表同时进行内连接

外连接:

返回所有匹配的数据和非匹配的数据,一次只能有两个表或视图进行外连接

迪卡尔积:

返回表内所有可能的匹配情况。

例如表A有10*20的数据,表B有30*40的数据,则两个表的迪卡尔积有(10+30)*(20+40)=40*60的数据

我们先建立两个数据集:

datamarch;

inputflight$3.+5datedate7.+3departtime5.+2orig$3.

+3dest$3. 

+7miles+6boarded+6capacity;

formatdatedate7.departtime5.;

informatdatedate7.departtime5.;

cards;

219 

01MAR94 

9:

31 

LGA 

LON 

3442 

198 

250

622 

12:

FRA 

3857 

207 

132 

15:

35 

YYZ 

366 

115 

178

271 

13:

PAR 

3635 

138 

302 

20:

22 

WAS 

229 

105 

180

114 

02MAR94 

7:

10 

LAX 

2475 

119 

210

202 

10:

43 

ORD 

740 

120 

147 

106 

03MAR94 

118 

03MAR94 

197 

180 

04MAR94 

148 

232 

137 

117 

146 

250

05MAR94 

104 

160 

185 

157 

177 

06MAR94 

128 

163 

150 

66 

07MAR94 

160 

164 

155 

135 

run;

datadela

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1