【SAS言語】SQLを用いたテーブル作成方法

当ページには広告が含まれています。

こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!

こんな方におすすめ!
  • SASプログラムの開発環境でSQLを実行する方法が知りたい。
  • SQLを用いた新規テーブルの作成方法が知りたい。
目次

【SAS実践】SQLを用いたテーブル作成

SAS環境にSQLを記述し、新規テーブルを作成する方法について解説します。

新規テーブル作成方法|ひな型

SAS言語とSQL構文を用いて新規テーブルを作成する場合、次のように記述します。

コード

CREATE TABLE直後にテーブル名を記載し、()内にデータ項目をそれぞれ定義します。各データ項目と併せてデータ型も定義しましょう。

/* 
================================================
新規テーブル作成 
================================================
*/
PROC SQL;
    CREATE TABLE test_db (
        id CHAR(4),
        product VARCHAR(20),
        price NUMERIC,
        store VARCHAR(20),
        date DATE
    );
QUIT;

/* 
================================================
出力
================================================
*/
PROC PRINT DATA=test_db;
RUN;

出力イメージ

上記実行後、テーブルに定義したデータ項目が確認できます。

id product price store date

新規テーブル作成|既存のテーブル・レコード参照

既存のテーブル情報を用いて新規のテーブルを作成したい場合があるかもしれません。そのような場合は次のような記述方法が有効です。

テーブル作成例(1)

コード

/* 
================================================
既存のテーブルを準備 
================================================
*/

data product_original;
input id$ product$ price store$ date date9.;
datalines;
1000 apple 100 TOKYO 4Mar1985
1001 orange 250 TOKYO 4Mar1985
1002 lemon 300 OSAKA 4Mar1985
1003 grape 400 OSAKA 4Mar1985
;
run;


/* 
================================================
新規テーブル作成(既存のテーブル情報を参照)
================================================
*/

PROC SQL;
TITLE "product_table for TOKYO";
CREATE TABLE  product_tokyo AS
	 SELECT * FROM product_original
	 WHERE store LIKE 'TOKYO';
QUIT;


/* 
================================================
出力
================================================
*/

PROC PRINT DATA=product_tokyo;
RUN;

出力イメージ

Obs	  id	product	 price	store	date
1	1000	  apple	   100	TOKYO	9194
2	1001	 orange	   250	TOKYO	9194
テーブル作成例(2)

コード

/* 
================================================
サンプルテーブルを準備 
================================================
*/

data product_original;
input id$ product$ price store$ date date9.;
datalines;
1000 apple 100 TOKYO 4Mar1985
1001 orange 250 TOKYO 4Mar1985
1002 lemon 300 OSAKA 4Mar1985
1003 grape 400 OSAKA 4Mar1985
;
run;

/* 
================================================
新規テーブル作成(既存のテーブルベース)
================================================
*/

PROC SQL;
TITLE "group by price using the table of product_tokyo";
CREATE TABLE aggregate_tokyo AS
	 SELECT store,
	 		SUM(price)    as total,
	   		MAX(price)    as max,
	   		MIN(price)    as min
 	 FROM product_original
 	 GROUP BY store;
QUIT;


/* 
================================================
出力
================================================
*/

PROC PRINT DATA=aggregate_tokyo;
RUN;

出力イメージ

Obs	store	total	max	  min
1	OSAKA	  700	400	  300
2	TOKYO	  350	250	  100

新規テーブル作成|既存のテーブル情報のみ参照

既存のテーブル情報(各種データ項目とそれに紐づくデータ型)のみをコピーし、新規のテーブルを作成したい場合、次のような記述方法が有効です。

コード

/* 
================================================
サンプルテーブルを準備 
================================================
*/

data product_original;
input id$ product$ price store$ date date9.;
datalines;
1000 apple 100 TOKYO 4Mar1985
1001 orange 250 TOKYO 4Mar1985
1002 lemon 300 OSAKA 4Mar1985
1003 grape 400 OSAKA 4Mar1985
;
run;

/* 
================================================
新規テーブル作成(既存のテーブル情報のみ参照)
================================================
*/

PROC SQL;
CREATE TABLE new_table like product_original;
QUIT;

/* 
================================================
出力
================================================
*/

PROC PRINT DATA=new_table;
RUN;

出力イメージ

既存のテーブル情報のみを参照しているため、新規テーブル作成時に既存テーブルのレコード情報は引き継ぎされないのが特徴です。

id product price store date

【参考】SASプログラミング記事一覧

当サイトではSASを用いたプログラミング解説記事を多数掲載しております。

SASはデータ処理・分析をはじめ、高度な統計解析や機械学習・AIによる予測モデリングなど様々な用途に利用できます。また金融や医療を代表とする様々な業界の分析業務で広く活用されています。

最後に

この記事が気に入ったら
フォローしてね!

本記事をシェア!
目次