「RDBMSの機能を100%活かしたいならSQLを学ぶべし。」
「SQLを使いこなすためにはサブクエリーを学ぶべし。」
私はデータベース関連のセミナーにおいて、常にこの様なお話しをしています。
そこで、今回もSQLのサブクエリーを使用して、下記のようなデータを集計する方法を紹介しましょう。
まずはコチラのサンプルファイルをダウンロードし、ファイルを開いてみてください。
「服用履歴」テーブルは「誰が」「いつ」「なんの薬品を服用したか」を管理している履歴テーブルです。
このテーブルからX氏が服用している薬品が何種類あるか集計してみましょう。
下記のSQLで集計できます。
SELECT COUNT(薬品) AS 種類の数 FROM (SELECT DISTINCT 薬品 FROM 服用履歴 WHERE 人物 = 'X') AS Alias;
「サンプルのクエリ1」をわかりやすく記載すると、以下の様になります。
SELECT 表示したい列 FROM ここから
このSQLのポイントは「ここから」にテーブルではなくサブクエリーを挿入している事です。
これによりサブクエリーで抽出したデータに対して、SELECT(選択)が実行可能となります。
次に、このSQLを応用して、人物別に服用している薬品が何種類あるか集計してみましょう。
(サンプルのクエリ2)
SELECT 人物,COUNT(薬品) AS 種類の数 FROM (SELECT DISTINCT 人物,薬品 FROM 服用履歴) AS Alias GROUP BY 人物;
Accessのデザインビューによるクエリでは、このような集計はできません。
なお、このSQLはAccess用に作っているものなので、RDBMSによっては動作しない製品もあるのでご注意して下さい。
そこで、最後にもう一度。
「RDBMSの機能を100%活かしたいならSQLを、そしてサブクエリーを学ぶべし!!」
(担当:奥田 英太郎)