SAS - SQL
SAS 通过在 SAS 程序中使用 SQL 查询,为大多数流行的关系数据库提供广泛的支持。 支持大多数 ANSI SQL 语法。过程 PROC SQL 用于处理 SQL 语句。 此过程不仅可以返回 SQL 查询的结果,还可以创建 SAS 表和变量。所有这些场景的示例如下所述。
语法
在 SAS 中使用 PROC SQL 的基本语法是 −
PROC SQL; SELECT Columns FROM TABLE WHERE Columns GROUP 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 IT 2 Dan 515.2 Operations 3 Michelle 611 IT 4 Ryan 729 HR 5 Gary 843.25 Finance 6 Nina 578 IT 7 Simon 632.8 Operations 8 Guru 722.5 Finance ; RUN; PROC SQL; CREATE TABLE EMPLOYEES AS SELECT * FROM TEMP; QUIT; PROC PRINT data = EMPLOYEES; RUN;
执行上述代码后,我们得到以下结果 −
SQL 读取操作
SQL 中的读取操作涉及编写 SQL SELECT 查询以从表中读取数据。 在下面的程序中,查询库 SASHELP 中可用的名为 CARS 的 SAS 数据集。 该查询获取数据集的一些列。
PROC SQL; SELECT make,model,type,invoice,horsepower FROM SASHELP.CARS ; QUIT;
执行上述代码后,我们得到以下结果 −
带有 WHERE 子句的 SQL SELECT
下面的程序使用 where 子句查询 CARS 数据集。 在结果中,我们只得到了 make 为 'Audi' 和 type 为 'Sports' 的观察。
PROC SQL; SELECT make,model,type,invoice,horsepower FROM SASHELP.CARS Where make = 'Audi' and Type = 'Sports' ; QUIT;
执行上述代码后,我们得到以下结果 −
SQL 更新操作
我们可以使用 SQL Update 语句更新 SAS 表。 下面我们首先创建一个名为 EMPLOYEES2 的新表,然后使用 SQL UPDATE 语句对其进行更新。
DATA TEMP; INPUT ID $ NAME $ SALARY DEPARTMENT $; DATALINES; 1 Rick 623.3 IT 2 Dan 515.2 Operations 3 Michelle 611 IT 4 Ryan 729 HR 5 Gary 843.25 Finance 6 Nina 578 IT 7 Simon 632.8 Operations 8 Guru 722.5 Finance ; RUN; PROC SQL; CREATE TABLE EMPLOYEES2 AS SELECT ID as EMPID, Name as EMPNAME , SALARY as SALARY, DEPARTMENT as DEPT, SALARY*0.23 as COMMISION FROM TEMP; QUIT; PROC SQL; UPDATE EMPLOYEES2 SET SALARY = SALARY*1.25; QUIT; PROC PRINT data = EMPLOYEES2; RUN;
执行上述代码后,我们得到以下结果 −
SQL 删除操作
SQL 中的删除操作涉及使用 SQL DELETE 语句从表中删除某些值。 我们继续使用上例中的数据,从表中删除员工工资大于 900 的行。
PROC SQL; DELETE FROM EMPLOYEES2 WHERE SALARY > 900; QUIT; PROC PRINT data = EMPLOYEES2; RUN;
执行上述代码后,我们得到以下结果 −