Sas 简明教程
SAS - SQL
SAS 通过在 SAS 程序中使用 SQL 查询,为大多数常用的关系型数据库提供广泛的支持。大多数的 ANSI SQL 语法受到支持。使用 PROC SQL 过程来处理 SQL 语句。这个过程不仅可以发送 SQL 查询的结果,还可以创建 SAS 表与变量。将针对所有这些场景提供示例,如下所示。
Syntax
在 SAS 中使用 PROC SQL 的基本语法如下:
PROC SQL;
SELECT Columns
FROM TABLE
WHERE Columns
GROUP BY Columns
;
QUIT;
以下是所用参数的描述 -
-
在 PROC SQL 语句下面编写 SQL 查询,其后面跟着 QUIT 语句。
接下来,我们将看到如何将这个 SAS 过程用于在 SQL 中的 CRUD (创建、阅读、更新和删除)操作。
SQL Create Operation
使用 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 Read Operation
SQL 中的读取操作包括编写 SQL SELECT 查询,以从表中读取数据。在以下示例中,此程序查询位于 SASHELP 库中的名为 CARS 的 SAS 数据集。查询获取了此数据集的一些列。
PROC SQL;
SELECT make,model,type,invoice,horsepower
FROM
SASHELP.CARS
;
QUIT;
在执行以上代码之后,我们将得到以下结果:
SQL UPDATE Operation
我们可以使用 SQL 更新语句来更新 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;
在执行以上代码之后,我们将得到以下结果: