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

MySQLで日付ごとの合計値を集計する方法【GROUP BY活用術】

MySQLでは、datetime型の日付データを日ごとにグループ化し、数値の合計を求めることができます。本記事では、サンプルテーブルを作成し、DATE()関数とGROUP BY句、SUM()関数を組み合わせて日付ごとの合計を集計する手順を解説します。

1. サンプルテーブルの作成

まず、datetime型のカラムと、日数(カウント)を格納するint型のカラムを持つテーブルを作成します。

mysql> create table DemoTable
(
    ShippingDate datetime,
    CountOfDate int
);
Query OK, 0 rows affected (0.52 sec)

2. レコードの挿入

次に、INSERTコマンドを使ってテーブルにレコードを挿入します。

mysql> insert into DemoTable values('2018-01-31',6);
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values('2016-12-01',15);
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable values('2016-12-01',10);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('2016-12-01',5);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values('2019-04-09',3);
Query OK, 1 row affected (1.05 sec)
mysql> insert into DemoTable values('2018-01-31',4);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('2019-04-09',4);
Query OK, 1 row affected (0.14 sec)

3. テーブルの内容を確認

SELECTコマンドでテーブル内のレコードを表示してみましょう。

mysql> select *from DemoTable;

以下のように、日付とカウントの一覧が出力されます。

+---------------------+-------------+
| ShippingDate        | CountOfDate |
+---------------------+-------------+
| 2018-01-31 00:00:00 |           6 |
| 2016-12-01 00:00:00 |          15 |
| 2016-12-01 00:00:00 |          10 |
| 2016-12-01 00:00:00 |           5 |
| 2019-04-09 00:00:00 |           3 |
| 2018-01-31 00:00:00 |           4 |
| 2019-04-09 00:00:00 |           4 |
+---------------------+-------------+
7 rows in set (0.00 sec)

4. 日付ごとの合計を取得するクエリ

ここがポイントです。date()関数でdatetime型から日付部分のみを取り出し、それをgroup byでグループ化することで、同じ日のレコードをまとめることができます。さらにsum()関数でカウントの合計を算出します。

mysql> select date(ShippingDate),sum(CountOfDate) from DemoTable group by date(ShippingDate);

5. 実行結果

上記のクエリを実行すると、以下のように各日付ごとの合計値が表示されます。

+--------------------+------------------+
| date(ShippingDate) | sum(CountOfDate) |
+--------------------+------------------+
| 2018-01-31         |               10 |
| 2016-12-01         |               30 |
| 2019-04-09         |                7 |
+--------------------+------------------+
3 rows in set (0.00 sec)

まとめ

このように、MySQLで日付ごとの集計を行う場合は、date()関数で時刻情報を除去した日付をキーにgroup byを使用するのが基本です。売上データやアクセスログなど、日単位での統計処理が必要な場面で非常に役立つテクニックなので、ぜひ覚えておきましょう。

  1. MySQLで特定の値を持つ列の数をカウントする方法【SUM関数の活用】

    はじめにMySQLでは、SUM関数と加算演算子(+)・論理演算子(AND)を組み合わせることで、テーブル内の複数の列に含まれる特定の値(たとえば「1」)の合計個数や、すべての列がその値を持つ行数を簡単に集計できます。本記事では、サンプルテーブルを作成しながら、具体的なSQLクエリの書き方と実行結果をわかりやすく解説します。基本構文特定の値を持つ列の数をカウントする場合、以下のような構文を使用します。selectsum(yourColumnName1 + yourColumnName2 + yourColumnName3 ... N) as `anyAliasName1`,sum(yourCol

  2. C#でリストの要素数を数える方法

    C#でリスト(List<T>)に含まれるアイテムの数を数えるには、Countプロパティを使用します。Countプロパティは、リストに現在格納されている要素の数をint型で返します。 リストを作成する まず、サンプルとして文字列型のリストを作成します。 List<string> myList = new List<string>() { electronics, clothing, appliances, accessories }; 要素数を取得する リストの要素数は、次のようにCountプロパティを参照するだけで取得でき