SAS中的SQL语句完全教程

上传人:s****a 文档编号:174115337 上传时间:2022-12-14 格式:DOCX 页数:12 大小:17.12KB
收藏 版权申诉 举报 下载
SAS中的SQL语句完全教程_第1页
第1页 / 共12页
SAS中的SQL语句完全教程_第2页
第2页 / 共12页
SAS中的SQL语句完全教程_第3页
第3页 / 共12页
资源描述:

《SAS中的SQL语句完全教程》由会员分享,可在线阅读,更多相关《SAS中的SQL语句完全教程(12页珍藏版)》请在装配图网上搜索。

1、SAS中的SQL语句完全教程之三:SQL过程步的其它特征(转)2012年06月14日/ SAS学习,统计学习/暂无评论SAS中的SQL语句完全教程之三:SQL过程步的其它特征估计最近的一个数据分析要用到SQL,因此特地的翻了翻很久没看的SQL,未避免做重复无用的工作,在度娘上搜了搜,居然发现了一个跟我看同一本书的网友, 讲解的还不错,因此果断的转了过来!原作者地址: 前面两部分内容都比较简单,本节内容才是本系列要介绍的重点。不过这里装的内容都是点到即止,如果以后有时间,会进行更详细地讲解。1 SQL 过程步选项SQL过程步选项的作用主要是可以从更细节的方式去控制SQL过程步,并且可以 在不执行

2、过程的情况下对程序进行测试等。下面介绍一下列出来的选项,这些选项大多经常用到,更多的选项可以参考SAS 帮助。INOBS:进行一个查询时,对每个源数据表进行N行限制,仅对这N行的数据进 行查询。OUTOBS:指定查询输出结果的观测数LOOPS:指定SQL过程步内循环的次数(此选项我用得比较少,谁明白的可以讲 一下,多谢)NOPROMPT和PROMPT:修改上述三个选项的效果,从而让你选择是否继续或停止 选项的效果。PRINT和NOPRINT:控制是否打印选择的数据结果NONUMBER和NUMBER:控制是否在第一列打印观测值编号DOUBLE和NOBOUBLE:输入报表是否隔行显示NOFLOW和

3、FLOW和FLOW二n和FLOW二n m :指定列宽,n指定列宽,m指定行宽? ?1.1 double 选项 proc sql double;select flight,datefrom MarchUNIONselect flight,datefrom Delay;quit;1.2 inobs 选项注意:这里inobs选项只读取每个源表前10条数据进行后续的操作,如下面的 日志所示。两个表都只读取10条数据进行关联,最后得到7条关联好的数据。237 proc sql inobs=10;238 create table tmp as239 select a.*,b.*240 from March

4、 a,Delay b241 where a.flight=b.flight and a.date=b.date;WARNING:变量“flight”已经存在于文件W0RK.TMP中。WARNING:变量“date”已经存在于文件WORK.TMP中。WARNING:变量“ orig ”已经存在于文件WORK.TMP中。WARNING:变量“ des t”已经存在于文件WORK.TMP中。WARNING: Only 10 records were read from WORK.DELAY (别名二B) 由 于 INOBS= 选项。WARNING: Only 10 records were read

5、 from WORK.MARCH (别名二A) 由于 INOBS= 选项。NOTE: 表 WORK.TMP 创建完成,有 7 行,11 列。1.3 outobs 选项这个选项的功能与inobs相似,不同的是,这个选项指定结果的观测值数量,而 不是读取源表的数量,这在我们控制输出结果的数据量时非常有用。243 proc sql outobs=10;244 create table tmp1 as245 select a.*,b.*246 from March a,Delay b247 where a.flight=b.flight and a.date=b.date;WARNING:变量“fli

6、ght”已经存在于文件WORK.TMP1中。WARNING:变量“date”已经存在于文件WORK.TMP1中。WARNING:变量“orig”已经存在于文件WORK.TMP1中。WARNING:变量“dest”已经存在于文件WORK.TMP1中。WARNING: 语句由于 OUTOBS=10 选项而过早终止。NOTE: 表 WORK.TMP1 创建完成,有 10 行, 11 列。1.4 prompt 选项 这里prompt选项,可以让你选择是否还是按照原来的设置进行动作,或者继续操作。如下面的日志所以,如果直接选择停止,则得到1.2的结果,如果一直按 继续,则得到如下结果:255 proc

7、sql inobs=10 prompt;256 create table tmp3 as257 select a.*,b.*258 from March a,Delay b259 where a.flight=b.flight and a.date=b.date;WARNING:变量“flight”已经存在于文件W0RK.TMP3中。WARNING:变量“date”已经存在于文件WORK.TMP3中。WARNING:变量“orig”已经存在于文件WORK.TMP3中。WARNING:变量“dest”已经存在于文件WORK.TMP3中。NOTE: 表 WORK.TMP3 创建完成,有 19 行,

8、11 列。1.5 number 选项proc sql outobs=4 number;select * from March;quit;1.6 reset 选项对上述 SQL 语句加上 reset 选项,使其不输出序号proc sql outobs=4 number;reset nonumber;select * from March;quit;2 DICTIONARY2.1 DICTIONARY 介绍DICTIONARY可以得到很多SAS文件和会话等很多的元数据,包括SAS文件,外 部文件,系统选项、宏、标题、脚注等。DICTIONARY是在初始化时就创建,自动更新,并只允许读取操作,故不能

9、修改。 下面列举一下SAS中DICTIONARY所包含的表:SAS V8 DICTIONARY 所包含的表:CATALOGS: SAS 目录的信息COLUMNS: SAS 变量和列的信息EXTFILES:外部数据信息INDEXES:参与索引的列的信息MACROS :宏相关信息MEMBERS:所有数据类型(表、视图、目录等)的信息OPTIONS:当前会话选项STYLES: ODS 的样式信息TABLES :表和数据集信息TITLES :标题和脚注信息VIEWS :视图信息SAS V9 DICTIONARY所包含的新的表:CHECK_CONSTRAINTS: CHECK 约束信息CONSTRAIN

10、T_COLUMN_USAGE :约束列使用信息CONSTRAINT_TABLE_USAGE:约束表使用DICTIONARIES: DICTIONARY 所有表及其列ENGINES:可用的引擎FORMATS :可用的格式GOPTIONS: SAS/GRAPH 选项LIBNAMES: LIBNAME 信息REFERENTIAL_CONSTRAINTS :相关约束REMEMBER:已记录的信息TABLE_CONSTRAINTS:表约束2.2 查看 2.1 中各表内容查看各表的结构,以查看 dictionary.tables 为例:proc sql;describe table dictionary.

11、tables;quit;这里可以从日志里看到表 dictionary.tables 的结构。要查看这个表的数据,可以通过以下语句实现,这里我们只输出前 10条数据 proc sql outobs=10;select * from dictionary.tables;quit;2.3 使用 DICTIONARY 的信息查看 SASHELP 库里的文件信息:proc sql;options nolabel nocenter;select memname,nobs,nvar,crdatefrom dictionary.tableswhere libname=SASHELP;quit;注意,这里的库名

12、都是大写。查看 SASHELP 库里有列名为 tabname 的所有表:proc sql;options nolabel nocenter;select memnamefrom dictionary.columnswhere libname=SASHELP and name=tabname;quit;注意这里是用 dictionary.columns 的信息用 SASHELP.VMEMBER 来撮 DICTIONARY.MEMBERS 的信息proc tabulate data=sashelp.vmember format=8.; class libname memtype;keylabel

13、N= ;table libname,memtype/rts=10 misstext=None; run;DICTIONARY 是一个非常有用的信息库,本文主要是介绍一下其基本功能,以后 有时间的话会对其进行详细介绍。3 SQL 过程步与宏语言的交互SQL 过程步可以创建 SAS 宏变量,也可以生成一些自动的宏变量,从其中可以更 好地理解 SQL 处理过程。3.1 在 SQL 过程中使用宏变量%let outputnumber=10;proc sql outobs=&outputnumber;options nolabel nocenter;select * from dictionary.ta

14、bleswhere libname=SASHELP;quit;这个很简单,就不讲了,下面讲一下本节的重点。3.2 创建宏变量SQL 过程步可以通过 into 语句来创建或更新宏变量,主要有三种方式。这里要 注意的是,在使用 into 语句创建宏变量时,我们是不能在 create table 或 create view 语句里使用的。当我们不需要输出结果时,可以用 noprint 选项。3.2.1 结果只有一行Select col1,col2,Into :mvar1,:mvar2,From 例:proc sql noprint;select avg(sales),min(sales),max(s

15、ales)into :mean, :min, :max from sashelp.shoes;quit;%put &mean &min &max;这种方式适合输出结果只有一行的情况。3.2.2提取前N行的值Select a,b,Into :a1-:an, :b1-:bnFrom 这种方法前前N行的查询结果输入到一系列的N个宏变量中。例:proc sql noprint;select Region,count(*) as frequencyinto :Region1-:Region3, :freq1-:freq3from sashelp.shoesgroup by Region;quit;%pu

16、t &Region1 &Region2 &Region3;%put &freq1 &freq2 &freq3;3.2.3 提取所有数据Select col1,col2,Into :macrovar1, :macrovar2,Separated by delimiterFrom 这里将每列的所有数据都输出到一个宏变量中,并以指定的分隔符分开例:proc sql noprint;select distinct Regioninto :RegionAllseparated by ,from sashelp.shoes;quit;%put &RegionAll;3.3 SQL 过程步自动产生的宏变量S

17、QLOBS:记录输出结果或被删除的观测值个数SQLRC:包含每个SQL语句的返回代码SQLOOPS:包含SQL过程步内循环的次数例:proc sql;select *from sashelp.shoes;quit;%put &SQLOBS;得到输出观测的条数。4 程序测试与效率 这里主要介绍几个SQL过程步的选项:Exec/Noexec:控制SQL语句是否执行Nostimer/Stimer:在SAS日志中报告每个SQL语句的效率统计数据Noerrors to p/Errors to p:批处理时控制当有错误发生时,是否要检查语法 例: noexe 与 feedback66 proc sql f

18、eedback noexec;67 select * from sashelp.shoes;NOTE: Statement transforms to:select SHOES.Region, SHOES.Product, SHOES.Subsidiary, SHOES.Stores,SHOES.Sales, SHOES.Inventory, SHOES.Returnsfrom SASHELP.SHOES;NOTE: 由于 NOEXEC 选项,未执行语句。68 quit;NOTE: “PROCEDURE SQL”所用时间(总处理时间):实际时间0.01 秒CPU 时间0.00 秒这里我们要注意的是,在比较不同 SQL 语句的效率时,一定要用 CPU 时间,而不 是用实际时间,因为实际时间可能会因运行机器的环境而有很大的出入。还要注 意的是,对于同一个数据集,在比较效率时,一定要考虑到该数据集第一次运行 后其排序等已经发生变化,会对效率也有影响。加入 QQ 群进入讨论组:236275451

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!