MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

GROUP BY句とMySQLのSUM()関数を組み合わせるメリットとは?

MySQLのSUM()関数GROUP BY句と組み合わせて使用すると、GROUP BY句で指定された各グループごとに合計値が計算されます。この組み合わせ最大のメリットは、特定のグループの合計を簡単に求められる点にあります。

サンプルテーブルの準備

ここでは、以下のレコードを持つ「employee_tbl」テーブルを使って、その仕組みを具体的に見ていきましょう。

mysql> SELECT * FROM employee_tbl;
+------+------+------------+--------------------+
| id   | name | work_date  | daily_typing_pages |
+------+------+------------+--------------------+
| 1    | John | 2007-01-24 |         250        |
| 2    | Ram  | 2007-05-27 |         220        |
| 3    | Jack | 2007-05-06 |         170        |
| 3    | Jack | 2007-04-06 |         100        |
| 4    | Jill | 2007-04-06 |         220        |
| 5    | Zara | 2007-06-06 |         300        |
| 5    | Zara | 2007-02-06 |         350        |
+------+------+------------+--------------------+
7 rows in set (0.00 sec)

このテーブルには、同じ人物が複数日分のレコードを持っているケース(JackやZaraなど)が含まれています。

GROUP BY句とSUM()関数の組み合わせ例

次のクエリを実行すると、人物ごとにレコードがグループ化され、各自が入力したページ数の合計を一度に取得できます。

mysql> SELECT name, SUM(daily_typing_pages)
    -> FROM employee_tbl GROUP BY name;
+------+-------------------------+
| name | SUM(daily_typing_pages) |
+------+-------------------------+
| Jack |           270           |
| Jill |           220           |
| John |           250           |
| Ram  |           220           |
| Zara |           650           |
+------+-------------------------+
5 rows in set (0.17 sec)

実行結果のポイント

結果を見ると、たとえばJackは170ページと100ページの2レコードが合計されて270となり、Zaraも300ページと350ページが合計されて650と表示されています。このように、同一人物の複数レコードが1行にまとめられ、それぞれの合計値が算出されます。

GROUP BY句とSUM()関数を併用すれば、人物別・日付別・カテゴリ別といった集計処理を、シンプルなSQL一文で効率的に実現できます。売上集計やアクセスログの分析など、実務でも非常に活用場面の多いテクニックです。

  1. MySQLのGROUP BYとHAVINGを使って、重複しないIDを持つレコードだけを表示する方法

    MySQLでは、GROUP BY句とHAVING句を組み合わせることで、テーブル内に1回しか出現しない(重複していない)値を持つレコードだけを簡単に抽出できます。本記事では、サンプルテーブルを作成し、実際にクエリを実行しながらその手順を解説します。 1. サンプルテーブルの作成 まず、以下のようにテーブルを作成します。 mysql> create table DemoTable (    Id int,    ColorName varchar(100) ); Query OK, 0 rows affected (0.56 sec) 2. テス

  2. MySQLのWHERE句でSUM()関数の結果は使用できる?HAVING句を使った正しい書き方を解説

    MySQLでは、SUM()などの集計関数の結果をWHERE句で直接使用することはできません。これは、WHERE句がグループ化の前に行単位で評価されるためです。代わりに、GROUP BYと組み合わせたHAVING句を使うことで、集計結果に基づいた絞り込みが可能になります。 ここからは、実際にサンプルテーブルを作成しながら手順を確認していきましょう。 1. サンプルテーブルの作成 まず、名前と価格を持つテーブルを作成します。 mysql> create table DemoTable ( Name varchar(50), Price int ); Query OK, 0