付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、SAS中的SQL语句完全教程之一:SQL简介与基本查询功能本系列全部内容主要以SQL Processing with the SAS System (Course Notes)为主进行讲解,本书是在网上下载下来的, 但忘了是在哪个网上下的,故不能提供下载链接了,需 要的话可以发邮件向我索取, 我定期邮给大家, 最后声明一下所有资料仅用于学习, 于商业目的,否则后果自负。不得用1 SQL过程步介绍1.1 SQL过程步可以实现下列功能查询SAS数据集、从SAS数据集中生成报表、以不同方式实现数据集合并、创建或删除 数据集、视图、索引等、更新已存在的数据集、使得SAS系统可以使用SQL语句、SAS可
2、以和SAS的数据步进行替换使用。注意,SQL过程步并不是用来代替SAS数据步,也不是一个客户化的报表工具,而是数据处理用到的查询工具。1.2 SQL过程步的特征SQL过程步并不需要对每一个查询进行重复、每条语句都是单独处理、不需要print过程步就能打印出查询结果、也不用sort过程步进行排序、不需要run、要quit来结束SQL过程 步1.3 SQL过程步语句SELECT查询数据表中的数据ALTER增加、删除或修改数据表的列CREATE创建一个数据表DELETE删除数据表中的列DESCRIBE列出数据表的属性DROP删除数据表、视图或索引INSERT对数据表插入数据RESET没用过,不知道什
3、么意思SELECT选择列进行打印UPDATE对已存在的数据集的列的值进行修改2 SQL基本查询功能2.1 SELECT语句基本语法介绍SELECT object-item FROM from-listGROUP BY group-by-item ORDER BY order-by-item ;这里SELECT指定被选择的列FROM指定被查询的表名WHERE子数据集的条件GROUP BY将数据集通过group进行分类HAVING根据GROUP BY勺变量得到数据子集ORDER BY对数据集进行排序2.2 SELECT语句的特征 选择满足条件的数据、数据分组、对数据进行排序、对数据指定格式、一次最
4、多查询32个表。这里还要提到的就是,在SAS系统中,对于表名和变量名一般不超过32个字符,对于库名,文件引用名,格式等不能超过8个字符2.3 Validate关键字Validate关键字只存在于select语句中、可以在不运行查询的情况下测试语句的语法、检 查列名是否合法、对于不正确的查询将打印其消息。例:12345NOTE: PROC SQL语句有有效语法。6此外,78910NOTE:11这里提示未执行, 未提示错误, 说明该语句没有语法错误。但是如果加入一个sashelp.shoes表里没有字段,这里就会出现错误,例:12131415ERROR:以下这些列在起作用的表中没有找到:test.
5、16 quit;2.3那样查询指定列,也可以用*来查询所有列。例:select *from sashelp.shoes;quit;这里我们可以用feedback选项来查看到底我们选择了哪些列:17 18 19NOTE: Statement transforms to:select SHOES.Region, SHOES.Product,SHOES.Subsidiary, SHOES.Stores, SHOES.Sales, SHOES.Inventory,SHOES.Returnsfrom SASHELP.SHOES;20 quit;这时,我们可以看到从sashelp.shoes表中选择了8个
6、列2.5消除重复值我们可以用distinct选项来消除重复值。例如,我们要得到没有重复的所有地区的名称:proc sql;select distinct Regionfrom sashelp.shoesproc sql;validate select Region,Product,Sales fromsashelp.shoes where Region =Africa;quit;我们还可以用noexec选项也可以用来进行语法测试。例:proc sqlnoexec;select Region, Product,Salesfrom sashelp.shoeswhere Region = Afric
7、a;由于NOEXEC选项,未执行语句。quit;proc sql noexec;select Region, Product,Sales,testfrom sashelp.shoes where Region =Africa;2.4查询列 我们可以像procsql;proc sql feedback; select * fromsashelp.shoes;quit;例 如 ,procsql;select *from sashelp.shoeswhere sales100000; quit;2.6.2 in:只要满足in里的任意一个值, 表达式即为真, 例如,我们要选择Region在Africa
8、和Eastern Europe的所有数据:proc sql;select *from sashelp.shoeswhere Region in (Africa,Eastern Europe);quit;2.6.4 CONTAINS或?:判断某列是否包含指定字符串 例如,选择列Region包含Afr的数据:proc sql;LT大于EQ=等于LE=大于或等于NEA =不等于2.6 where子集查询2.6.1先列出比较运算符where语句用到的比较运算符:我们要查询sales大于100000的所有数据:逻辑运算符|2.6.3 OR AND NOT例如,proc sql;select *from
9、sashelp.shoeswhere Region in (Africa,Eastern Europe) andquit;选择是非Region在Africa和Eastern Europe,且销售额大于100000的所有数据:sales100000;select *from sashelp.shoeswhere Region ? Afr;quit;2.6.5 IS NULL或IS MISSING:判断某列数据是否为空 例如,如果找出Region为空的数据:proc sql;select *from sashelp.shoeswhere Region is missing;quit;注意,这里我们
10、还可以用以下表达式对 则可以用region=.,如果region为字符型变量,则可以用2.6.6 Between and:选择某一区间的数据 例如选择sales大于100000,但小于200000的所有数据:proc sql;select *from sashelp.shoes where sales between 100000 and 200000;quit;2.6.7 like:判断是否能匹配某些字符 例如,选择以region以A开头的所有地区proc sql;select *from sashelp.shoes where Region like A%;quit;这里注意有两类通配符,
11、 %可以通配任意个任意字符,2.6.8 =*:类似匹配这里由于sashelp.shoes里没有符合要求的数据,所有就用书上的例子说明一下吧:Where lastname=*smith,出来的结果可能是:smith,smythe等2.7表达式 我们可以通过已有的列进行计算来得到新的列, 这时用关键词as来给新的列赋列名, 例如:proc sql;select Region, Product,Sales,Stores,Sales/Stores as salesperstores from sashelp.shoesquit;这时结果就会多一列salesperstores,用来得到该地区该产品每个商
12、店的平均销售量。这 里要注意的是,在创建表达式时,我们还可以在SQL里用到SAS中的除LAG和DIFF之外的所有函数。这里我们还可以用表达式计算出来的结果来进行子集查询,但一定要记住用 键词。例如我们要找出商店平均销售量大于5000的数据: 方法一:proc sql;select Region, Product,Sales,Stores,Sales/Stores as salesperstores from sashelp.shoeswhere Sales/Stores5000;quit;方法二:proc sql;select Region, Product,Sales,Stores,Sale
13、s/Stores as salesperstores from sashelp.shoeswhere calculated salesperstores5000;quit;2.8查询结果展示where语句进行替换。如果region为数值型变量,region=进行替换。只能通配一个任意字符calculated关2.8.1 order by数据排序默认的排序方式是升序,我们可以用DESC关键词来进行降序排列。例如以sales降序排列数据proc sql;select *from sashelp.shoesorder by Sales DESC;quit;这里提示一下,我们可以用任意多列进行排序,包
14、括表达式结果(不用 好是选择的列。calculated),但最2.8.2 LABEL与FORMATLABEL改变输出变量名的内容FORMAT改变列的值的输出方式例如,改变salesperstores的label和format proc sql;select Region, Product,Sales,Stores,Sales/Stores as salesperstores label=salesper stores format=dollar12.2 fromsashelp.shoes;quit;2.9处理SQL常用函数MEAN或AVG均值COUNT或N或FREQ非缺失值个数MAX最大值MI
15、N:最小值NMISS缺失值个数STDSUMVAR标准差求和方差2.9.1proc sql;select Region, Product,Sales,Stores,sum(Sales,Inventory,Returns) as totalfrom sashelp.shoes;quit;求和sum2.9.2求均值avgproc sql;select Region, Product,Sales,Stores,avg(Sales) as salesavg fromsashelp.shoes;quit;2.9.3分组求均值group by procsql;select Region,avg(Sales)
16、 as salesavgfrom sashelp.shoes group by Region;quit;2.9.4计数countproc sql;select Region,count(*) as count from sashelp.shoes group by Region;quit;2.9.5 HAVING数据子集proc sql;select Region,count(*) as count from sashelp.shoes group by Region having count(*)50;quit;其它的就不多作介绍了,多用用就熟悉了2.10子查询2.10.1找出regions
17、平均sales大于全部平均sales的region proc sql;select Region, avg(Sales) as salesavg from sashelp.shoes group by Region having avg(Sales)(select avg(Sales) from sashelp.shoes); quit;2040=20 or =30 or =40state的sales小于任意region为africa的sales的数据select Region,Sales from sashelp.shoes where Region=UnitedStates and Sal
18、esALL (20,30,40)最终效果:40ALL (20,30,40)最终效果:ANY(20,30,40)ANY(20,30,40)=ANY(20,30,40)例如, 选择出region proc sql;最终效果:最终效果: 最终效果: 为united210from sashelp.shoeswhere Region=United States and Sales1的话,将会出现错误。回滚ROLLBACKS当我们用INSERT或UP DATE的时候,操作要等到发生错误的时候才会停止,这时会出现一个问题, 就是数据表的一些数据更新了, 而另一些数据没更新, 这时如果我们要回到原来的状 态,
19、就需要用到UNDO_POLICY项进行回滚。UNDO_ POLIC有三个选项:REQUIRED缺省选项,取消所有的更新或新插入的数据。全能成功。NONE阻止所有的与约束不符的更新或新数据0PTOINAL取消所有可以成功取消的更新或新插入的数据本功能用得很少,所以只是翻译一下,请大家查阅相关文献。6创建视图与索引视图 视图最大的好处是它只是一个存储的查询, 间。其它的功能与数据库的表类似。 创建视图语法:Create View View-name asQuery-expression ;例:proc sql noprint outobs=0;这里要注意的是, 此操作不一定完因此不包含任何数据,
20、这可以减少磁盘的使用空create View select* from Delay; quit;索引语法:Create Index index-nameOn table-name (column-name,column-name);视图和索引都用得很少,所以这里就不作讲解了,大家查阅相关文献吧。7维护表 这里主要讲一下如何更新或删除已存在的表的数据, 的属性,如何删除表、视图和索引。更新数据这里主要用update来更新表的数据,语法如下Update table-nameSet column-name=expression,Set column-name=expression,Where exp
21、ression;注意,这里的where一定要写清楚,如果没有的话,则会更新所有的数据。 例:proc sql noprint;update delayset delaycat=Delaywhere delay=0;quit;条件处理用CASE语句来实现条件处理。例如,对SASHELP.shoes根据sales的大小进行分类:语法:Select colu mnCase When when-condition then result-expressionEnd;例:proc sql;create table shoesrank as select *,(casewhen sales100000 t
22、hen good else badend) as rankfrom sashelp.shoes;quit;删除行语法:Delete from table-nameWhere expression;例:proc sql;Delete from shoesrank Where Region=Africa; quit;改变列delayview as如何对一个表增加、 减少、 或改变其列语法:Alter Table table-nameAdd column-definition,column-definition,Drop colu mn-n ame,colu mn-n ame,Modify colu
23、mn-definition,column-definition,对已存在的数据表增加一个列:例:proc sql;alter table shoesrankadd addcolumn num format=ma10.2, addcolumnmore char(10);quit;从已存在的数据表中删除列,例:proc sql;alter table shoesrankdrop addcolumn;quit;修改某列的属性,例:proc sql;alter table shoesrankmodify addcolumnmore char(20) label=modify add label; qu
24、it;删除表、视图、索引语法:Drop Table table-name,table-name, Drop View View-name,View-name, Drop Index index-name,index-name,From table-name;例:proc sql;drop table shoesrank;quit;SAS中的SQL语句完全教程之三:SQL过程步的其它特征SAS中的SQL语句完全教程之三:SQL过程步的其它特征本系列全部内容主要以SQL Processing with the SAS System (Course Notes)为主进行讲解, 本书是在网上下载下来的
25、,但忘了是在哪个网上下的,故不能提供下载链接了,需要的话可以发邮件 向我索取,我定期邮给大家, 最后声明一下所有资料仅用于学习, 不得用于商业目的, 否则后果自负。前面两部分内容都比较简单,本节内容才是本系列要介绍的重点。不过这里装的内容都是点到即止, 如果以后有时间,会进行更详细地讲解。1 SQL过程步选项SQL过程步选项的作用主要是可以从更细节的方式去控制SQL过程步,并且可以在不执行过程的情况下对程序进行测试等。面介绍一下列出来的选项,这些选项大多经常用到,更多的选项可以参考INOBS进行一个查询时,对每个源数据表进行N行限制,仅对这N行的数据进行查询。OUTOBS指定查询输岀结果的观测
26、数LOOPS指定SQL过程步内循环的次数(此选项我用得比较少,谁明白的可以讲一下,多谢)NOPROMPT PROMPT修改上述三个选项的效果,从而让你选择是否继续或停止选项的效果。PRINT和NOPRINT控制是否打印选择的数据结果NONUMBEBNUMBER控制是否在第一列打印观测值编号DOUBLED NOBOUBLE输入报表是否隔行显示NOFLOW和FLOV和FLOW=和FLOW= n m:指定列宽,n指定列宽,m指定行宽? ?SAS帮助。double选项select flight,datefrom MarchUNIONselect flight,datefrom Delay;quit ;
27、inobs选项 注意:这里inobs选项只读取每个源表前10条数据进行后续的操作,如下面的日志所示。两个表都只读取10条数据进行关联,最后得到7条关联好的数据。where a.flight=b.flight and a.date=b.date;proc sqldouble;237proc sql inobs=10;238create table tmp as239240from March a,Delay b241WARNING变量flight”已经存在于文件WORK.TM冲。WARNING:变量date”已经存在于文件WORK.TMP中。WARNING变量orig”已经存在于文件WORK.T
28、MP中。WARNING:变量dest”已经存在于文件WORK.TMP中。WARNING: Only 10 records were read from WORK.DELAY(别名=B) 由于INOBS=选项。WARNING: On ly 10 records were read from WORK.MARCH(别名=A由于INOBS=选项。NOTE:表WORK.TMP创建完成,有7行,11列。outobs选项 这个选项的功能与inobs相似,不同的是,这个选项指定结果的观测值数量, 而不是读取源表的数量,这在我们控制输出结果的数据量时非常有用。where a.flight=b.flight a
29、nd a.date=b.date;WARNING语句由于OUTOBS=1Q选项而过早终止。NOTE:表WORK.TMP创建完成,有10行,11列。prompt选项243proc sql outobs=10;244create table tmp1 as245select a.*,b.*246from March a,Delay b247WARNING变量flight已经存在于文件WORK.TM P1中。WARNING变量date”已经存在于文件WORK.T MP仲。WARNING变量orig”已经存在于文件WORK.T MP仲。WARNING变量dest”已经存在于文件WORK.T MP仲。这
30、里prompt选项,可以让你选择是否还是按照原来的设置进行动作,或者继续操作。如下面的日志所以,如果直接选择停止,则得到1.2的结果,如果一直按继续,则得到如下结果:proc sql inobs=10 prompt;where a.flight=b.flight and a.date=b.date;NOTE:表WORK.T MP3创建完成,有19number选项proc sql outobs= 4 number;select * from March;quit ;reset选项 对上述SQL语句加上reset选项,使其不输岀序号proc sql outobs= 4 number;reset n
31、onumber;WARNING变量flight已经存在于文件WORK.T MP沖。WARNING:变量date”已经存在于文件WORK.T MP沖。WARNING变量orig”已经存在于文件WORK.T MP沖。WARNING:变量dest”已经存在于文件WORK.T MP沖。255256create table tmp3 as257select a.*,b.*258from March a,Delay b259行,11列。select * from March;quit ;2 DICTIONARYDICTIONARY介绍DICTIONARY可以得到很多SAS文件和会话等很多的元数据,包括SA
32、S文件,外部文件,系统选项、宏、标题、脚注等。DICTIONARY是在初始化时就创建,自动更新,并只允许读取操作,故不能修改。F面列举一下SAS中DICTIONARY所包含的表:SAS V8 DICTIONARY所 包含的表:CATALOGSSAS目录的信息COLUMNSSAS变量和列的信息EXTFILES外部数据信息INDEXES参与索引的列的信息MACROS宏相关信息MEMBERS所有数据类型(表、视图、目录等)的信息OPTIONS当前会话选项STYLES ODS勺样式信息TABLES表和数据集信息TITLES:标题和脚注信息这里可以从日志里看到表dictionary.tables的结构。
33、VIEWS视图信息SAS V9 DICTIONARY所包含的新的表:CHECK CONSTRAINTSHECK勺束信息CONSTRAINT COLUMN USAG束列使用信息CONSTRAINT TABLE USA约束表使用DICTIONARIES DICTIONARY所有表及其列ENGINES可用的弓I擎FORMATS可用的格式GOP TIONS SAS/GRA P选项LIBNAMES LIBNAME言息REFERENTIAL CONSTRAI NT相关约束REMEMBER已记录的信息TABLE CONSTRAINTS!约束2.2查看2.1中各表内容查看各表的结构,以查看dictionary
34、.tables procsql ;describe table dictionary.tables;quit ;为例:要查看这个表的数据,可以通过以下语句实现,这里我们只输出前10条数据from dictionary.columnsproc sql outobs= 10;select * from dictionary.tables;quit ;2.3使用DICTIONARY勺信息查看SASHEL库里的文件信息:proc sql ;options nolabel nocenter;select memname,nobs,nvar,crdatefrom dictionary.tableswher
35、e libname=SASHELP;quit ;注意,这里的库名都是大写。查看SASHEL库里有列名为tab name的所有表:proc sql ;options nolabel nocenter;select memnamewhere libname=SASHELP and name=tabname;quit ;select * from dictionary.tables注意这里是用dictionary.columns的信息用SASHELP.VMEMB来撮DICTIONARY.MEMBE的言息:proc tabulate data=sasheIp.vmember format= 8.;cl
36、ass libname memtype;keylabel N= ;table libname,memtype/rts= 10 misstext=None;run;DICTIONARY是 一个非常有用的信息库,本文主要是介绍一下其基本功能,以后有时间的话会对其进 行详细介绍。3 SQL过程步与宏语言的交互SQL过程步可以创建SAS宏变量,也可以生成一些自动的宏变量,从其中可以更好地理解程。3.1在SQL过程中使用宏变量%let outputnumber=10;proc sql outobs=&outputnumber;options nolabel nocenter;where libn
37、ame=SASHELP;SQL处理过quit ;这个很简单,就不讲了,下面讲一下本节的重点。3.2创建宏变量SQL过程步可以通过into语句来创建或更新宏变量,主要有三种方式。这里要注意的是,在使用into语句创建宏变量时,我们是不能在create table或create view语句里使用的。当我们不需要输出 结果时,可以用noprint选项。24c-aaf7-c9b0f9d6281b-Numbered_4a5a736e-ef21-4677-a2结果只有一行Select col1,col2,Into :mvar1,:mvar2,From例:proc sql noprint;select a
38、vg(sales),min(sales),max(sales)into :mean, :min, :maxfrom sashelp.shoes;quit ;%put &mean &min &max;这种方式适合输出结果只有一行的情况。322提取前N行的值Select a,b,Into :a1-:an, :b1-:bnFrom这种方法前前N行的查询结果输入到一系列的N个宏变量中。例:proc sql noprint;select Region,count(*) as frequencyinto :Region1-:Region3, :freq1-:freq3from sa
39、shelp.shoesgroup by Region;quit ;%put &Region1 &Region2 &Region3;%put &freq1 &freq2 &freq3;4ba7-8741-746efdf33f3d-Numbered_c2500efd-009e 提取所有数据Select col1,col2,Into :macrovar1, :macrovar2,Separated bydelimiterFrom这里将每列的所有数据都输出到一个宏变量中,并以指定的分隔符分开。例:proc sql noprint;select disti
40、nct Regioninto :RegionAllseparated by ,from sashelp.shoes;quit ;%put &RegionAll;3.3 SQL过程步自动产生的宏变量SQLOB:记录输岀结果或被删除的观测值个数SQLRC包含每个SQL语句的返回代码SQLOOPS包含SQL过程步内循环的次数例:proc sql ;select *from sashelp.shoes;quit ;%put &SQLOBS;得到输岀观测的条数。4程序测试与效率 这里主要介绍几个SQL过程步的选项:Exec/Noexec:控制SQL语句是否执行Nostimer/Stime
41、r:在SAS日志中报告每个SQL语句的效率统计数据Noerrorstop/Errorstop:批处理时控制当有错误发生时,是否要检查语法例:noexe与feedback66 proc sql feedback 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.SHOE
42、S;NOTE:由于NOEXEC选项,未执行语句。68 quit;NOTE:“PROCEDURE SQ所用时间(总处理时间)0.01秒CPU时间这里我们要注意的是,在比较不同SQL语句的效率时,一定要用CPU时间,而不是用实际时间,因为实际时间可能会因运行机器的环境而有很大的出入。还要注意的是,对于同一个数据集,在比较效率 时,一定要考虑到该数据集第一次运行后其排序等已经发生变化,会对效率也有影响。在SQL过程步中使用SAS数据步的选项实际时间0.00秒在SQL过程步中使用SAS数据步的选项Using Data Set Options in PROC SQL本文主要讲解了在SQL过程步中使用SA
43、S数据步的选项,包括DROP KEEP LABEL PRESS SORTEDBYWHER和RENAM等,灵活地使用这些选项可以让我们的SQL过程步更有效、更简洁。附录创建了三个数据集,方便我们进行讲解。050-Numbered_82e1aac9-9bbb-4421-8aea-a82a2b291265 DROP和KEEP在使用用SQL过程步时,我们可以用select选择结果要保留的列,或者用*选择所有的列。但是如果 我们要选择除某一两个列之外的所有的列,这时就要使用将其他的列全部都写一遍,是不是很麻烦。这时我们就可以用到DROP来删除这几个不需要的列。例如我们要保留除A1和A3列之外的SCORE
44、数据集中的所有数据:%let label=Scores Data Set without A1 and A3;proc sql ;create table Scores1(label=&label) asselect quit ;此外我们还可以直接在CREATE TABL语句后面加上Drop或Keep选项来删除或保留指定的列:proc sql ;create table Scores2(label=&label drop=A1 A3) asselectfrom Scores;quit ;fromScores(drop=A1 A3);F面一个例子是用多种方法来实现保留除B开头以外
45、的所有列:例1这里KEEP选项里的A1-A10表示了变量范围,即:A1到A10共10个变量。注意这里的 表示变量范围,如果在SQL过程步的select语句中,则表示用A1减去A10的值来创建一个新的变量。proc sql ;create table only_As_1(label=Scores for A Parameters Only) asselectScores(keep=Subject_id Visit A1-A10);quit ;例2:这里用-表示名字范围,B1-B10表示从B1到B10共10个变量proc sql ;create table only_As_2(label=Scor
46、es for A Parameters Only) asselectquit ;例3:B :也是名字范围,指所有以B开头的变量proc sql ;create table only_As_3(label=Scores for A Parameters Only) asselectquit ;例4:_numeric_指所有的数值型变量,与之相对应的是_character_,表示所有的字符型变量。fromfromScores(drop=B1-B10);fromScores(drop= B:);proc sql ;create table only_As_4(label=Scores for A P
47、arameters Only) asselectScores(keep=Subject_ID _numeric_);quit ;050-Numbered_82e1aac9-9bbb-4421-8aea-a82a2b291265 LABEL这个选项在上面几个例子中已经讲解。050-Numbered_82e1aac9-9bbb-4421-8aea-a82a2b291265 PRESSPRESSfe要是用来减少数据集的存储空间,在SQL过程步使用PRESS选项进行数据压缩时,我们需要在CREATE TABL语句后要压缩的数据表后面加入该选项。proc sql ;create table only_B
48、s(press=yes) asselectNOTE:表WORK.ONLY_B创建完成,有60000行,12050-Numbered_82e1aac9-9bbb-4421-8aea-a82a2b291265 RENAMEfromfromScores(drop=A1-A10);quit ;NOTE:压缩的数据集WORK.ONLY B大小减少了百分之54.85。压缩为484页;不压缩将会要求1072页。列。RENAM作用是更改数据集的变量的名称,例如我们要将SCROE中的数组A的所有变量加上前缀Base_,你可以用select语句一个一个地更改名字,也可以用rename数据步选项。例:用Select
49、一个一个地进行更名proc sql;create table Baseline_A_1 asselect subject_id,a1 as base_a1,a10 as base_a10Scoresquit;例:用RENAM选项proc sql ;create table baseline_A_2 asselectScores(rename=(a1-a10=base_a1-base_a10) drop=b:)quit ;注意,这里我们将数组A的名字改为以B开头的变量,而后面一句drop=b:是不是会把刚才更名完后的变量也删除掉。结果是不会的,因为Keep和Drop选项是在Rename选项之前就
50、执行了。fromwherevisit=1;fromwherevisit= 1;面来讲一个我们经常遇到的情况:两个表的内连接。例如我们要对表SCORE和SURGER进行内连接,表SCORE的主键为subject_id,而表SURGEF的主键为sid,这时,我们一般的内连接语句为:proc sql feedback _method;create table Scores_Surg1 asselectT1.visit=T2.visit;quit ;另一种方法就是先将SURGER中的sid改名为subject_id,然后运用数据表的inner join来进行数据表的内连接:proc sql feedb
51、ack _method;create table Scores_Surg2 asselectnatural inner joinSurgery(rename=(sid=subject_id) T2;quit ;另外,我们还可以遇到列名为SAS关键词时,会岀现一些错误,例如:proc sql _method;create table caseLT4_1 asfromScores T1, Surgery T2whereT1.subject_id=T2.sid andfromScores T1select *from Surgerywhere case lt 4;quit ;这里,where cas
52、e这一句,SAS会认为这是一个条件操作的开始(case whenthenend),因此会岀现错误。这时我们可以先将该列名更名后再进行where语句。例如:proc sql _method;create table caseLT4_2 asselect *Surgery(rename=(case=case_id)quit ;22735f9-Numbered_63736fac-f294-465e-8863-2ab4ce03 SORTEDBY该选项主要指明数据集已用哪些变量进行排序,这会增加SQL过程步的效率。本人对该选项用得比较 少,对效率优化也做得比较少,就不再介绍,请大家阅读相关文献。22735f9-Numbered_63736fac-f294-465e-8863-2ab4ce03 WHEREWHER选项在SQL过程步中,主要用于取数据子集或指定连接条件。Surgery数据集中,visit小于16的客户在Scores数据中增加一个标识。一般的方法如下:proc sql ;create table sco
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 基于以人为本理念的城市轻轨公共空间形态人性化设计研究
- 基于人物属性的行人重识别:方法、挑战与突破
- 基于人工智能的平面数控高速研磨机加工工艺参数专家系统构建与应用研究
- 基于产品服务系统的精装房大规模定制家具设计创新与实践
- 基于亚像素的特征提取关键技术:原理、算法与多领域应用洞察
- 江西省抚州市临川区第四中学2027届数学八年级第一学期期末经典试题含解析
- 2027届黑龙江省哈尔滨市延寿县九年级数学第一学期期末考试模拟试题含解析
- 2025年吉林省图们市高二生物下册期末考试模拟测试卷含完整答案(各地真题)
- 2025年云南省蒙自市高二生物下册期末考试模拟检测卷含答案【综合卷】
- 2025年湖北省应城市高二生物下册期末考试模拟检测卷含完整答案【名校卷】
- 议论文的论证方法-2026年高考语文写作指导课件
- 2026年家庭医生团队签约服务技能培训考试题及答案
- 2026年高考化学全国I卷真题含解析及答案
- RTK测量教程培训城市管理与执法探索
- 中级财务会计试题以及答案
- 中国竞彩从业资格考试及答案解析
- 2025年小学教育事业统计数据核查自查报告
- 燃气场站消防安全知识培训课件
- 烟囱课件教学课件
- 《新生儿有创血气分析专家共识(2023)》解读 3
- 广东电网公司配网安健环设施标准
评论
0/150
提交评论