こんにちは、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による予測モデリングなど様々な用途に利用できます。また金融や医療を代表とする様々な業界の分析業務で広く活用されています。
最後に
お問い合わせフォーム
上記課題に向けてご気軽にご相談下さい。
お問い合わせはこちら