JMPで使用する基本的なSQLステートメントはSELECT文です。SELECT文は、データソースから取得する行をデータベースに伝えます。第 “データベースを照会するためのSQLステートメントを書く”で説明した手順を完了すると、次のSQLステートメントを送信したことになります。
SELECT * FROM "Solubility"
*演算子は、「すべての列」の省略形で、指定したデータテーブルからのすべての列を返すようデータベースに要求します。
特定の列のみが必要な場合は、*をデータテーブル内の特定の列名で置き換えることができます。たとえば、例のSolubility(溶解度)データの場合、次の文を実行すると、エーテル(ETHER)、1- オクタノール(OCTANOL)、四塩化炭素(CHLOROFORM)の溶剤だけを選択できます。
SELECT ETHER, OCTANOL, CHLOROFORM FROM "Solubility"
JMPでは、SQLをタイプせずにグラフィカルな方法で、簡単なSELECT文を作成できます。データソースから特定の列を選択するには、列のリストでそれらの列を強調表示します。
データソースの一意のレコードだけを取得する必要がある場合、つまり、重複レコードを除外したい場合があります。これを行うには、DISTINCTキーワードを使用します。
SELECT DISTINCT ETHER, OCTANOL, CHLOROFORM FROM "Solubility"
データベースの1つまたは複数のフィールドで並べ替えた結果を取得できます。これには、ORDER BYコマンドを使って並べ替える変数を指定します。
SELECT * FROM "Solbility" ORDER BY LABELS
ここでは、LABELS変数の値で並べ替え、すべてのフィールドを選択しています。別の変数も並べ替えのキーとして指定するには、次のようにカンマで区切って変数を指定します。
SELECT * FROM "Solubility" ORDER BY LABELS, ETHER, OCTANOL
WHERE文は、条件に基づいてデータテーブルの特定の行を取得します。たとえば、「ETHER」列が1より大きい行をすべて選択する場合は、次のようになります。
SELECT * FROM "Solubility" WHERE ETHER > 1
WHERE文はFROM文の後に挿入し、次の論理演算子が使用できます。
SELECT * FROM "Solubility" WHERE ETHER > -2 OR OCTANOL < 1 AND CHLOROFORM > 0
SELECT * FROM "Solubility" WHERE ETHER > -2 OR (OCTANOL < 1 AND CHLOROFORM > 0)
SELECT * FROM "Solubility" WHERE LABELS IN (’Methanol’, ’Ethanol’, ’Propanol’)
は、「LABELS」列の値が「Methanol」、「Ethanol」、または「Propanol」の行をすべて取得します。
SELECT * FROM "Solubility" WHERE ETHER BETWEEN 0 AND 2
は、「ETHER」列の値が0から2までの行をすべて取得します。
LIKE文では、指定した文字列に類似した値を選択できます。どの値でもとれる文字列を表すには%を使用します。たとえば、Solubility(溶解度)データの中からアルコールである化学薬品、つまり語尾が-olであるものを選択するには、次のようなSQLステートメントを使用します。
SELECT * FROM "Solubility" WHERE LABELS LIKE ‘%OL’
%演算子はLIKE文の中のどこにでも挿入できます。次の例はLABELの値がMで始まりOLで終わる行をすべて抽出します。
SELECT * FROM "Solubility" WHERE LABELS LIKE ‘M%OL’
•
|
SELECT SUM(ETHER), SUM(OCTANOL) FROM "Solubility"
•
|
この文は、「ETHER」の値が1より大きい行の数を返します。
|
SELECT COUNT(*) FROM "Solubility" WHERE ETHER > 1
•
|
この文は、アルコールであるデータの「OCTANOL」列の平均を返します。
|
SELECT AVG(OCTANOL) FROM "Solubility" WHERE LABELS LIKE ‘%OL’
GROUP BYコマンドとHAVINGコマンドは集約関数とともに使用すると特に便利です。これらのコマンドでは、データセットのフィールド値に基づいて、集約関数を複数回実行できます。
•
|
SELECT COUNT(ETHER) FROM "Solubility" GROUP BY (ETHER)は、「ETHER」列の水準ごとの度数を含んだ1列のデータを返します。
|
•
|
SELECT COUNT(ETHER) FROM "Solubility" WHERE OCTANOL > 0 GROUP BY (ETHER)は、上の文と同じ働きをしますが、「OCTANOL」列の値が0より大きい行だけを返します。
|
SELECT ETHER, COUNT(ETHER) FROM "Solubility" GROUP BY (ETHER)
は、度数に加えて、「ETHER」列の水準を含む列を返します。
集約関数はWHERE文内での値の計算に使用すると便利です。たとえば、「ETHER」列の値が平均よりも大きいすべての値を取得したいとします。つまり、まず「ETHER」列の平均値を求めて、そして、その値よりも大きい値を持つレコードを選択します。興味のある変数の平均値を取得するにはSELECT AVG(ETHER) FROM "Solubility"を使用することはすでに説明しました。適切なSQLコマンドのWHERE条件の中にこの文を使用します。
SELECT * FROM "Solubility" WHERE ETHER > (SELECT AVG(ETHER) FROM "Solubility")
クエリーを作成した後で、そのクエリーを再び使用したい場合があります。クエリーは、使用するたびに手動で入力する必要はありません。外部ファイルに書き出しておくことができます。このためには、Excelファイルの「Solbility」テーブルからすべての変数を読み込むに示すウィンドウで[SQLの書き出し]ボタンをクリックします。すると、SQLクエリーをテキストファイルに保存するためのウィンドウが表示されます。
保存したクエリーを読み込むには、Excelファイルの「Solbility」テーブルからすべての変数を読み込むに示すウィンドウで[SQLの読み込み]ボタンをクリックします。すると、読み込むクエリーを選択するためのウィンドウが表示されます。クエリーを開くと、それがウィンドウに読み込まれます。
JMPでは、ODBC読み込み時にWHERE式エディタを使用することによって、ベンダー独自の関数に基づく基本的なSQL式を簡単に作成できます。 たとえば、比較に「=」または「==」のどちらを使うか、平均の計算にavg()またはaverage()のどちらを使うかを知らなくてもSQLクエリーを作成できます。
1.
|
第 “データベースへの接続”の手順に従って、データベースに接続します。
|
2.
|
「データベース: テーブルを開く」ウィンドウで[詳細]ボタンをクリックします。
|
3.
|
[WHERE式]ボタンをクリックします。
|
WHERE式エディタのようなパネルを表示します。
図3.47 WHERE式エディタ