开发手册 欢迎您!
软件开发者资料库

SAS - SQL

SAS SQL - 从简单和简单的步骤学习SAS,从基本到高级概念,包括概述,环境,用户界面,程序结构,基本语法,数据集,变量,字符串,数组,数字函数,运算符,循环,决策,函数,输入法,宏,日期和时间,SQL,输出传递系统,模拟,直方图,图表,散点图,箱线图,算术平均值,标准偏差,频率分布,交叉制表,T检验,方差,线性回归,Bland- Altman分析,卡方,Fishers精确测试,单向Anova,重复测量分析,假设检验。

SAS通过在SAS程序中使用SQL查询,为大多数流行的关系数据库提供广泛的支持.支持大多数 ANSI SQL 语法.过程 PROC SQL 用于处理SQL语句.此过程不仅可以返回SQL查询的结果,还可以创建SAS表和&变量.所有这些场景的示例如下所述.

语法

在SAS中使用PROC SQL的基本语法是 :

PROC SQL;SELECT ColumnsFROM TABLEWHERE ColumnsGROUP BY Columns;QUIT;

以下是所用参数的说明及减号;

  • SQL查询写在PROC SQL语句下面,后跟QUIT语句.

下面我们将看看这个SAS是怎么做的过程可用于SQL中的 CRUD (创建,读取,更新和删除)操作.

SQL创建操作

使用SQL我们可以从原始数据创建新的数据集.在下面的示例中,首先我们声明一个名为TEMP的数据集,其中包含原始数据.
然后我们编写一个SQL查询来从这个数据集的变量创建一个表.

DATA TEMP;INPUT ID $ NAME $ SALARY DEPARTMENT $;DATALINES;1 Rick 623.3 IT2 Dan 515.2 Operations3 Michelle 611 IT4 Ryan 729 HR5 Gary 843.25 Finance6 Nina 578 IT7 Simon 632.8 Operations8 Guru 722.5 Finance;RUN;PROC SQL;CREATE TABLE EMPLOYEES ASSELECT * FROM TEMP;QUIT;PROC PRINT data = EMPLOYEES;RUN;

当执行上面的代码时,我们得到以下结果 :

SQL_create_table

SQL读取操作

SQL中的读取操作涉及编写SQL SELECT查询以从中读取数据表.在下面的程序中,查询库SASHELP中可用的名为CARS的SAS数据集.查询获取数据集的一些列.

PROC SQL;SELECT make,model,type,invoice,horsepowerFROM SASHELP.CARS;QUIT;

当执行上面的代码时,我们得到以下结果 :

SQL1

带有WHERE子句的SQL SELECT

以下程序用查询CARS数据集条款.在结果中,我们只获得了作为'奥迪'并输入'体育'的观察结果.

PROC SQL;SELECT make,model,type,invoice,horsepowerFROM SASHELP.CARSWhere make = 'Audi'and Type = 'Sports';QUIT;

当执行上面的代码时,我们得到以下结果 :

SQL_where_clause

SQL UPDATE操作

我们可以使用SQL Update语句更新SAS表.下面我们首先创建一个名为EMPLOYEES2的新表,然后使用SQL UPDATE语句更新它.

DATA TEMP;INPUT ID $ NAME $ SALARY DEPARTMENT $;DATALINES;1 Rick 623.3 IT2 Dan 515.2 Operations3 Michelle 611 IT4 Ryan 729 HR5 Gary 843.25 Finance6 Nina 578 IT7 Simon 632.8 Operations8 Guru 722.5 Finance;RUN;PROC SQL;CREATE TABLE EMPLOYEES2 ASSELECT ID as EMPID,Name as EMPNAME ,SALARY as SALARY,DEPARTMENT as DEPT,SALARY*0.23 as COMMISIONFROM TEMP;QUIT;PROC SQL;UPDATE EMPLOYEES2      SET SALARY = SALARY*1.25;   QUIT;      PROC PRINT data = EMPLOYEES2;RUN;

SQL DELETE操作

SQL中的删除操作涉及删除某些操作表中的值使用SQL DELETE语句.我们继续使用上面示例中的数据并删除表中的行,其中
员工的薪水大于900.

PROC SQL;DELETE FROM EMPLOYEES2      WHERE SALARY > 900;QUIT;      PROC PRINT data = EMPLOYEES2;RUN;