Sas-sql

提供:Dev Guides
移動先:案内検索

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データセットを照会します。 結果では、「Audi」として行われ、「Sports」として入力された観測のみが取得されます。

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

上記のコードが実行されると、次の結果が得られます-

SQL_where_clause

SQL UPDATE操作

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.JPG

SQL DELETE操作

SQLの削除操作では、SQL DELETEステートメントを使用してテーブルから特定の値を削除する必要があります。 上記の例のデータを引き続き使用し、従業員の給与が900を超える行をテーブルから削除します。

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

上記のコードが実行されると、次の結果が得られます-

proc_sql_delete.JPG