【SAS言語】SQLのSELECT文によるデータ参照・集計方法

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

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

こんな方におすすめ!
  • SASプログラムの開発環境でSQLを実行する方法が知りたい。
  • SASプログラム内にSQLのSELECT文を記述し、データ参照・集計する方法が知りたい。
目次

【SAS実践】SQL SELECT文とデータ参照

SASの開発環境にSQLを記述し、データを抽出する方法について解説していきます。

後続では、以下に示すtest_dbというサンプルデータセットを用いてSASプログラムを実行します。SASプログラムの先頭に以下のコードを貼り付けておきましょう。

コード

/* 
================================================
SQLサンプルデータを準備 
================================================
*/

data test_db;
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;

出力イメージ

id	   product	price	store	date	     date
1000	 apple	  100	TOKYO	9194	04MAR1985
1001	orange	  250	TOKYO	9194	04MAR1985
1002	 lemon	  300	OSAKA	9194	04MAR1985
1003	 grape	  400	OSAKA	9194	04MAR1985

SELECT文のひな型

SASプログラム内でSQLを実行するには、PROC SQLQUITというステートメントを用いて、次のように記述します。

コード

/* 
================================================
SELECT文でデータ取得
================================================
*/

PROC SQL;
	SELECT *
	FROM test_db;
QUIT;

出力イメージ

id	   product	price	store	date
1000	 apple	  100	TOKYO	9194
1001	orange	  250	TOKYO	9194
1002	 lemon	  300	OSAKA	9194
1003	 grape	  400	OSAKA	9194

カラムの指定

指定したカラムのデータのみ抽出したい場合、次のように記述します。

抽出の際にデータ型のフォーマットを指定したい場合(例:dateというカラムをdate型で出力したい)、対象カラムの直後にformatを指定すると良いです。

コード

/* 
================================================
SELECT文でデータ取得
================================================
*/

PROC SQL;
    SELECT id, product, date format=date9.
    FROM test_db;
QUIT;

出力イメージ

id	   product	     date
1000   	 apple	04MAR1985
1001	orange	04MAR1985
1002	lemon	04MAR1985
1003	grape	04MAR1985

出力件数を指定

出力するレコード件数を指定したい場合、OUTOBSを用いて次のように記述します。

コード

/* 
================================================
SELECT文でデータ取得
================================================
*/

PROC SQL OUTOBS=1;
	SELECT *
	FROM test_db;
QUIT;

出力イメージ

id	   product	price	store	date
1000	 apple	  100	TOKYO	9194

Where句による条件抽出

特定の条件を満たすレコードのみを抽出したい場合はWhere句を用いて次のように記述します。

コード

/*
================================================
SELECT文でデータ取得
================================================
*/

PROC SQL;
	SELECT *, date format=date9.
	FROM test_db
	WHERE (product EQ 'apple') OR
		  (price GT 300) OR
		  (STORE IN ("OSAKA"));
	      ;
QUIT;

出力イメージ

id	  product	price	store	date	     date
1000	apple	  100	TOKYO	9194	04MAR1985
1002	lemon	  300	OSAKA	9194	04MAR1985
1003	grape	  400	OSAKA	9194	04MAR1985

Where句で用いる不等号

Where句指定の際によく利用する抽出条件も併せて記載します。

条件文概要
EQ等しい(=)
GTより大きい(>)
GE以上(>=)
LE以下(<=)
IN 含む
LIKE含む(文字列)

【SAS実践】SQL SELECT文とデータ集計

続いて、SAS開発環境でSQLを用いてデータを集計する方法について解説します。

後続では、以下に示すtest_dbというサンプルデータセットを用いてSASプログラムを実行します。SASプログラムの先頭に以下のコードを貼り付けておきましょう。

コード

/* 
================================================
SQLサンプルデータを準備 
================================================
*/

data test_db;
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;

出力イメージ

id	   product	price	store	date	     date
1000	 apple	  100	TOKYO	9194	04MAR1985
1001	orange	  250	TOKYO	9194	04MAR1985
1002	 lemon	  300	OSAKA	9194	04MAR1985
1003	 grape	  400	OSAKA	9194	04MAR1985

集計|合計・平均・最大・最小値

指定したカラムの合計値・平均値・最大値・最小値をそれぞれ集計したい場合、次のように記述します。

コード

/* 
================================================
SELECT文でデータ集計
================================================
*/

PROC SQL;
SELECT "集計結果"  as title,
	   sum(price) as total,
	   avg(price) as average,
	   min(price) as min,
	   max(price) as max
FROM test_db;

QUIT;

出力イメージ

title	total	average	  min	max
集計結果	1050	262.5	  100	400

グループ集計|Group By

前述の集計結果をグループ別に集計したい場合、次のように記載します。

コード

/* 
================================================
SELECT文でデータ集計
================================================
/*  */

PROC SQL;
SELECT store,
	   sum(price) as total,
	   avg(price) as average,
	   min(price) as min,
	   max(price) as max
FROM test_db
GROUP BY store;

QUIT;

出力イメージ

store	total	average  	min 	max
OSAKA	  700	    350	    300	    400
TOKYO	  350	    175	    100  	250

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

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

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

最後に

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

本記事をシェア!
目次