見るためのデータベース・SQL 検索結果をテーブルとして扱う


エンジニアにとってみれば、SQL は使えてあたりまえかもしれませんが、営業や管理部の人からすれば魅惑の魔法といわれることもあります。 しかし非エンジニアの方でも SQL が使えた方がいいですし、 そのほうがエンジニアの作業も楽になります。

ここでは、 SQL による検索結果をひとつのテーブルとして扱う方法を説明します。 サブクエリと呼ばれるものです。

環境

  • PostgreSQL 9.2

他の データベースシステム でも同じです。

最大の平均を考える

営業所ごとの毎日の売上高があるとします。 それぞれの営業所について最大の1日の売上高を計算して、その平均を計算します。

sales
id store_id amount date
1 1 1200 2015-06-14
2 1 4000 2015-06-12
3 1 400 2015-06-23
4 2 1500 2015-01-17
5 2 1200 2015-01-08
6 2 1900 2015-03-21
7 3 6000 2015-08-31
8 3 100 2015-02-22
9 3 1000 2015-05-11

ここから、それぞれの営業所の最大売上高を出すには次のように記述します。

この最大売上高の平均を取るには、上のSQLを括弧で囲み、テーブルとして扱います。

s は、 サブクエリの結果をテーブルとして扱う場合のテーブル名(別名)です。

平均より大きいデータを抽出する

上のテーブルで、平均より大きいデータを抽出してみましょう。 先に平均を求めてから検索することもできますが、 サブクエリを使うと一度にできます。

このように、 サブクエリを WHERE のところの条件記述に使うこともできます。

見るためのデータベース・SQL 目次