8章グループ化と集計

データベースのユーザーが必要とするデータの単位はさまざまなので、データを格納するときにはそのうち最も小さな単位を使うというのが一般的です。たとえば、アカウントを管理しているChuckが個々の顧客の取引を調べる必要があるとしたら、取引を個別に記録するテーブルがデータベースに存在しなければなりません。とはいえ、すべてのユーザーがデータベースに保存されているデータをそのままの形で扱わなければならないというわけではありません。本章では、データをグループ化したり集計したりすることで、データベースに格納するときよりも大きな単位でデータを操作できるようにする方法を重点的に見ていきます。

8.1 グループ化

データにどのような傾向があるか調べたいので、結果セットを生成する前にデータベースサーバー側でデータを少し加工したいことがあります。たとえば、得意客に無料クーポンを送付するとしましょう。データベースサーバーに保存されている素のデータを調べるのは簡単です。

mysql> SELECT customer_id FROM rental;
+-------------+
| customer_id |
+-------------+
|           1 |
|           1 |
|           1 |
|           1 |
|           1 |
|           1 |
......
|         599 |
|         599 |
|         599 |
|         599 |
|         599 |
+-------------+
16044 rows in set (0.05 sec)

のべ599人の顧客が16,000件のレンタル記録に散らばっており、素のデータを調べてレンタル回数が最も多い顧客を調べるというのは現実的ではありません。そこで代わりに、group by句を使ってデータベースサーバーにデータをグループ化させることができます。同じクエリに ...

Get 初めてのSQL 第3版 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.