データ操作言語は結果に対してさらにグループ化やソートができる
先生:結果をさらにグループ化したりソートすることができます。先ほどの結合データを見てください。販売日ごとに表示しているので、鉛筆が重複していますが、商品名だけでグループ化するには以下のようにします。この結果は表4のようになります。
SELECT 商品名, count(販売数) AS 販売合計 FROM 結合データ GROUP BY 商品名;
![]() |
|---|
| 表4●結合データを商品名でグループ化 |
由美:countというのは何ですか?
先生:countは集計を意味し、その商品の販売数の合計を表示します。これを集約関数と呼んでいて、他にmaxやminがあります。またASの次には新しい列名が指定されています。さらに、ORDER BYを組み合わせることによって、表示順序をソートすることができます。たとえばこんな感じですね(図5、表5)。
SELECT 商品名, count(販売数) AS 販売合計 FROM 結合データ GROUP BY 商品名 ORDER BY 販売合計, 商品名;
![]() |
|---|
| 図5●ORDER BYを使ったSELECT文の操作手順 |
![]() |
|---|
| 表5●データを集計してソートを行なった |
仮想テーブルを作る「ビュー」
お父さん:SQLをうまく組み合わせることで、いろいろな操作ができることは実感できたのですが、なんというかすごくややこしい気がします。
由美:結果をその都度新しいテーブルとして定義すればよいと思うのだけど、元のテーブルが変わってしまっては駄目よね。
先生:そういうときには「ビュー」を使えばよいでしょう。ビューは仮のテーブルを作るものです。先程結合データというテーブルを作成しましたが、それと同様にして以下のように書くことで、「結合ビュー」という仮想テーブルを作成します。生成したビューはテーブルと同じようにして、SELECT文で扱うことができます。
CREATE VIEW 結合ビュー AS SELECT 商品名,販売数,販売日 FROM 商品データ, 販売データ WHERE 商品データ.商品番号 = 販売データ.商品番号;
![]() |
|---|
お父さん:いつのまにかいい時間になってしまいましたね。次は何についての勉強ですか?
先生:あ、急なんですが、今度転任することになってしまいました。そのため今回を持って最後としたいと思います。でも今回まででリレーショナルデータベースの基本のところは終わりました。いまの中村さんや由美ちゃんなら、本でどんどん勉強できるでしょう。
お父さん・由美:それは残念ですね。いままでありがとうございました。
先生:これからも頑張ってください。またいつの日かお会いしましょう。

















