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 Create Table

SQL 讀取操作

SQL 中的讀取操作包括編寫 SQL SELECT 查詢以從表中讀取資料。下面的程式查詢 SASHELP 庫中名為 CARS 的 SAS 資料集。該查詢獲取資料集的一些列。

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

執行上述程式碼後,我們將得到以下結果:

SQL1

帶有 WHERE 子句的 SQL SELECT

下面的程式使用 **where** 子句查詢 CARS 資料集。在結果中,我們只得到製造商為“奧迪”且型別為“跑車”的觀測值。

PROC SQL;
SELECT make,model,type,invoice,horsepower
FROM 
SASHELP.CARS
Where make = 'Audi'
and Type = 'Sports'
;
QUIT;

執行上述程式碼後,我們將得到以下結果:

SQL Where Clause

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;

執行上述程式碼後,我們將得到以下結果:

Proc sql Update

SQL 刪除操作

SQL 中的刪除操作包括使用 SQL DELETE 語句從表中刪除某些值。我們繼續使用上述示例中的資料,並刪除員工工資大於 900 的表中的行。

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

執行上述程式碼後,我們將得到以下結果:

Proc SQL Delete
廣告
© . All rights reserved.