Click here to load reader

SPRING 2011 - SAS ... SPRING 2011 [特集] SASから始めるSQL 03 上記のようにSELECT句から始まるSQLステートメントをクエリと呼ぶこ とがあります。クエリには必ずSELECT句とFROM句が必要です。それ

  • View
    2

  • Download
    0

Embed Size (px)

Text of SPRING 2011 - SAS ... SPRING 2011 [特集] SASから始めるSQL 03...

  • SPRING 2011 特集 SASから始めるSQL

    01 09SAS Academic News - 事例紹介 - コラム「SAS四方山話」

    Q&A

    SASトレーニングのお知らせ

    最新リリース情報

    SASユーザー総会のお知らせ

    18

    21

    23

    24

    For Higher Customer Satisfaction, We Bridge the SAS System Between Customer’s World.

    SQLは長い歴史を持つデータベース操作言語で、現在も多くのリレー

    ショナルデータベースで標準的に使用されています。SAS以外のリレー

    ショナルデータベースでSQLを使用していた方は、その知識をSASで

    直接生かすことができます。まだSQLに触れたことがない方も、これか

    らSQLを学ぶ利点はあります。DATAステップとは異なる構文、異なる

    データ処理方法を持つ言語を学ぶことで、プログラミングの幅を広げる

    ことができます。例えば、複数のテーブルから情報を取得するような処

    理はSQLを利用すると簡易に記述できるため、その箇所だけSQLで書

    くケースがあります。処理の内容によってDATAステップとSQLを使い分

    けることで、プログラムの開発効率をスマートに上げることができます。

  • 02 [特集] SASから始めるSQL SPRING 2011

    SQLとはリレーショナルデータベース管理システム(RDBMS)において、

    データの抽出や更新を行うための言語です。標準規格として多くの

    データベースでサポートされており、SASでもサポートしています。

    SASでSQLを使うと、DATAステップとほぼ同等の処理をデータセット

    や外部データベースのテーブルに対して行うことができます。また、

    SQL文の中でSAS関数、データセットオプション、マクロなどSAS特有の

    機能も使用することができます。

    SQLとDATAステップにて使用する用語の名称が異なるものがありま

    す。主な用語の違いについては以下の表をご覧ください。

    SQLとDATAステップ用語比較表

    1SQLとは

    SQLプロシジャはBase SAS® に含まれるプロシジャです。SASでSQLを

    使用する場合、次のようにSQLステートメントをSQLプロシジャの中に

    記述します。

    SQLステートメントは一つのまとまった処理を実行するための命令文で

    す。複数の句によって構成され、必ずセミコロンで終わります。

    また、下記のように一つのSQLプロシジャの中に複数の独立したSQL

    ステートメントを記述することも可能です。

    2SQLプロシジャ 特集

    SASから始める SQL

    SAS DATAステップにおける名称 SQLにおける名称

    データセット

    オブザベーション

    変数

    テーブル

    カラム(列)

    PROC SQL;

    < SQLステートメント>;

    /* QUITステートメントで終わる点に注意! */

    QUIT;

    PROC SQL;

    < SQLステートメント>;

    < SQLステートメント>;

    < SQLステートメント>;

    QUIT;

    本特集ではSQLの基本であるデータの抽出と、代表的な処理である

    テーブルの結合およびサブクエリについてサンプルプログラムと図を交

    えてご説明します。

  • [特集] SASから始めるSQLSPRING 2011 03

    上記のようにSELECT句から始まるSQLステートメントをクエリと呼ぶこ

    とがあります。クエリには必ずSELECT句とFROM句が必要です。それ

    以外の句は処理の内容に応じて追加します。

    この章ではクエリにおけるさまざまな句の使い方について、サンプルプ

    ロ グ ラ ム を 用 い て 説 明 し ま す。な お 、サ ン プルプ ロ グ ラ ムで は

    sashelp.classを用います。これはSASのsashelpライブラリ配下に標準

    で格納されているデータセット(テーブル)です。

    sashe l p . c l assに格納されているデータは以下の通りです。なお、

    SAS® 9.2から文字データが日本語に変更されています。

    sashelp.classの内容

    SQLプロシジャの中でSELECT句を使うと、抽出結果はアウトプット

    ウィンドウに表示されます。SELECT句単体では、新しいテーブルは作

    成されません。

    また、次のようにSELECT句でアスタリスク(*)を指定するとすべてのカ

    ラムが抽出されます。

    3.1 データの抽出(SELECT句、FROM句) クエリの最も簡単な形は、次のようにSELECT句とFROM句のみを含み

    ます。

    SELECT文の前にCREATE TABLE ASステートメントを追加することで、

    クエリの結果をテーブルに出力できます。大きいテーブルを扱う場合は

    抽出結果をテーブルに出力することが有用です。

    上記プログラムを実行するとworkライブラリの中にテーブルtable1が作

    成されますが、他の恒久ライブラリの中にテーブルを出力することもでき

    ます。

    SQLで最も多く使用されるデータの抽出処理について説明します。

    データの抽出とは、既存のテーブルからデータを読み込む処理です。

    DATAステップの「データセットの読み込み」と同じ処理です。

    SQLでデータの抽出処理を行うには、次のようなSQLステートメントを

    記述します。

    3データの抽出と加工

    /* クエリの基本構文*/

    PROC SQL;

    SELECT カラム名

    FROM ライブラリ名.テーブル名

    WHERE 抽出条件

    ORDER BY カラム名

    ;

    QUIT;

                  /* 最も簡単なクエリ */ PROC SQL;

    SELECT name, weight, age

    FROM sashelp.class

    ;

    QUIT;

    Name

    アルフレッド

    アリス

    バーバラ

    キャロル

    ヘンリー

    ジェームズ

    OBS

    1

    2

    3

    4

    5

    6

    Sex

    男子

    女子

    女子

    女子

    男子

    男子

    Age

    14

    13

    13

    14

    14

    12

    Height

    69

    56.5

    65.3

    62.8

    63.5

    57.3

    Weight

    112.5

    84

    98

    102.5

    102.5

    83

    〈7行目以降省略〉

    このクエリは、SELECT句で指定したカラム(name、weight、age)を、

    FROM句で指定したテーブル(sashelp.class)から抽出し、結果をアウト

    プットウィンドウに表示します。カラムはSELECT句で指定した順番で表

    示されます。

    PROC SQL;

                /* すべてのカラムを抽出する */ SELECT *

    FROM sashelp.class

    ;

    QUIT;

    PROC SQL;

                 /* 新規テーブルを作成 */ CREATE TABLE table1 AS

    SELECT *

    FROM sashelp.class

    ;

    QUIT;

    /* tempライブラリの割り当て */

    LIBNAME temp "c:¥temp";

    PROC SQL;

    /* 新規テーブルを作成 */

    CREATE TABLE temp.table1 AS

    SELECT *

    FROM sashelp.class

    ;

    QUIT;

  • 04 [特集] SASから始めるSQL SPRING 2011

    3.2 データの並べ替え(ORDER BY句) 特定のカラムの値に応じて行を並べ替えるにはORDER BY句を用いま

    す。下記の例では、カラムageに含まれる値に応じて行が昇順で並べ替

    えられます。

    デフォルトではデータは昇順で並べ替えられます。降順で並べ替えるに

    はカラムの後に「DESC」を記述してください。

    3.3 抽出条件の指定(WHERE句) WHERE句でデータの抽出条件を指定できます。WHERE句の条件に合

    致した行がテーブルから抽出されます。

    SQLのWHERE句では条件式を記述します。条件式は真・偽について評

    価され、真の場合に限り該当の行が抽出されます。条件式では比較演

    算子、論理演算子、または特殊演算子を用いることができます。それぞ

    れにおける代表的な演算子を例に挙げて、説明します。

    ● 比較演算子 SAS DATAステップとほぼ同様の比較演算子を使うことができます。

    例えばカラムageが15より大きい行を抽出するには、次のようなプログラ

    ムを記述します。

    SORTプロシジャと同様に、複数のカラムの値を対象とした並べ替え

    を行うこともできます。次のようにORDER BY句で複数のカラムを指

    定します。

    SQLでは、クエリを実行すると行の順序が変わってしまう場合があります。

Search related