投稿日時:

「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を、そしてサブクエリーを学ぶべし!!」

(担当:奥田 英太郎

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>