- SAS 教程
- SAS - 首頁
- SAS - 概述
- SAS - 環境
- SAS - 使用者介面
- SAS - 程式結構
- SAS - 基本語法
- SAS - 資料集
- SAS - 變數
- SAS - 字串
- SAS - 陣列
- SAS - 數值格式
- SAS - 運算子
- SAS - 迴圈
- SAS - 決策
- SAS - 函式
- SAS - 輸入方法
- SAS - 宏
- SAS - 日期和時間
- SAS 資料集操作
- SAS - 讀取原始資料
- SAS - 寫入資料集
- SAS - 合併資料集
- SAS - 合併資料集
- SAS - 子集資料集
- SAS - 排序資料集
- SAS - 格式化資料集
- SAS - SQL
- SAS - 輸出交付系統
- SAS - 模擬
- SAS 基本統計過程
- SAS - 算術平均值
- SAS - 標準差
- SAS - 頻數分佈
- SAS - 交叉表
- SAS - t 檢驗
- SAS - 相關分析
- SAS - 線性迴歸
- SAS - Bland-Altman 分析
- SAS - 卡方檢驗
- SAS - Fisher 精確檢驗
- SAS - 重複測量分析
- SAS - 單因素方差分析
- SAS - 假設檢驗
- SAS 有用資源
- SAS - 快速指南
- SAS - 有用資源
- SAS - 問答
- SAS - 討論
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 資料集。在結果中,我們只得到製造商為“奧迪”且型別為“跑車”的觀測值。
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;
執行上述程式碼後,我們將得到以下結果: