SAS SQL

2018-12-14 17:50 更新

SAS通過在SAS程序中使用SQL查詢,為大多數(shù)流行的關(guān)系數(shù)據(jù)庫提供廣泛的支持。 支持大多數(shù)ANSI SQL語法。 過程PROC SQL用于處理SQL語句。 此過程不僅可以返回SQL查詢的結(jié)果,還可以創(chuàng)建SAS表和變量。 所有這些情況的示例如下所述。

語法

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

PROC SQL;
SELECT Columns
FROM TABLE
WHERE Columns
GROUP BY Columns
;
QUIT;

以下是使用的參數(shù)的描述:

  • SQL查詢寫在PROC SQL語句之后,后跟QUIT語句。

下面我們將看到這個SAS過程如何用于SQL中的CRUD(創(chuàng)建,讀取,更新和刪除)操作。

SQL創(chuàng)建操作

使用SQL,我們可以創(chuàng)建新的數(shù)據(jù)集形式原始數(shù)據(jù)。 在下面的示例中,首先聲明一個名為TEMP的數(shù)據(jù)集,其中包含原始數(shù)據(jù)。 然后我們寫一個SQL查詢,從這個數(shù)據(jù)集的變量創(chuàng)建一個表。

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;

當(dāng)執(zhí)行上面的代碼中,我們得到以下結(jié)果:

SQL讀操作

SQL中的讀取操作涉及編寫SQL SELECT查詢以從表中讀取數(shù)據(jù)。 In以下程序查詢庫SASHELP中可用的名為CARS的SAS數(shù)據(jù)集。 查詢獲取數(shù)據(jù)集的某些列。

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

當(dāng)執(zhí)行上面的代碼中,我們得到以下結(jié)果:

SQL SELECT with WHERE Clause 條件查詢語句

以下程序使用where子句查詢CARS數(shù)據(jù)集。 在結(jié)果中,我們只得到了作為“Audi”和類型為“Sports”的觀察。

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

當(dāng)執(zhí)行上面的代碼中,我們得到以下結(jié)果:

SQL UPDATE操作

我們可以使用SQL Update語句更新SAS表。 下面我們首先創(chuàng)建一個名為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語句從表中刪除某些值。 我們繼續(xù)使用上面示例中的數(shù)據(jù),并從表中刪除雇員的工資大于900的行。

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


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號