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

MySQLで特定の月のレコードに基づいて選択した列の値を合計する方法

はじめに

MySQLでは、MONTH()関数とSUM()関数を組み合わせることで、日付データから特定の月に該当するレコードだけを抽出し、その列の値を合計することができます。この記事では、実際のテーブル作成から集計までの手順を順番に解説します。

1. テーブルの作成

まず、サンプル用のテーブルを作成しましょう。

mysql> create table DemoTable
(
   Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   PurchaseDate date,
   SalePrice int
);
Query OK, 0 rows affected (0.51 sec)

このテーブルには、購入日(PurchaseDate)と販売価格(SalePrice)が格納されます。

2. レコードの挿入

次に、insertコマンドを使ってテーブルにいくつかのレコードを挿入します。

mysql> insert into DemoTable(PurchaseDate,SalePrice) values('2018-01-10',450);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable(PurchaseDate,SalePrice) values('2019-12-25',1000);
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable(PurchaseDate,SalePrice) values('2016-12-02',5560);
Query OK, 1 row affected (0.07 sec)
mysql> insert into DemoTable(PurchaseDate,SalePrice) values('2015-02-20',4550);
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable(PurchaseDate,SalePrice) values('2015-12-11',4110);
Query OK, 1 row affected (0.15 sec)

年月が異なる複数の日付を含むデータを登録することで、月ごとの絞り込み効果を確認しやすくなります。

3. 登録されたレコードの確認

select文を使って、テーブル内のすべてのレコードを表示してみましょう。

mysql> select *from DemoTable;

実行すると、次のような結果が出力されます。

+----+--------------+-----------+
| Id | PurchaseDate | SalePrice |
+----+--------------+-----------+
|  1 | 2018-01-10   |       450 |
|  2 | 2019-12-25   |      1000 |
|  3 | 2016-12-02   |      5560 |
|  4 | 2015-02-20   |      4550 |
|  5 | 2015-12-11   |      4110 |
+----+--------------+-----------+
5 rows in set (0.00 sec)

4. 特定の月の列の値を合計するクエリ

以下は、特定の月に基づいて選択した列の値を合計するクエリです。この例では、PurchaseDateが12月であるレコードのみを対象に、SalePriceの合計を求めています。

mysql> select SUM(SalePrice) from DemoTable
   where month(PurchaseDate)=12;

month()関数は日付から月の数値(1〜12)を返すため、= 12という条件を指定することで、12月のレコードだけを抽出できます。このクエリで合計されるのは、次の3件のレコードです。

2019-12-25
2016-12-02
2015-12-11

実行結果は以下の通りです。

+----------------+
| SUM(SalePrice) |
| 10670          |
+----------------+
1 row in set (0.00 sec)

まとめ

このように、where month(日付列) = 月の数値という条件式とSUM()関数を組み合わせれば、年に関係なく特定の月だけのデータを簡単に集計できます。なお、特定の「年かつ月」で絞り込みたい場合は、year()関数との組み合わせや範囲指定(BETWEEN)を活用するとよいでしょう。

  1. MySQLで特定のカラムのデータをエクスポートする方法(INTO OUTFILEの使い方)

    MySQLで特定のカラムのデータをエクスポートする方法 MySQLでテーブルから特定のカラム(列)のデータだけをファイルに書き出したい場合は、SELECT文とINTO OUTFILEを組み合わせるのが最もシンプルで確実な方法です。この記事では、実際にテーブルを作成し、データを投入したうえで、特定のカラムをテキストファイルへエクスポートする手順を順番に解説します。 基本構文 特定のカラムをファイルに出力する際の基本構文は次のとおりです。 select yourColumnName from yourTableName into outfile yourLocationOfFile; このように

  2. MySQLで今月のレコードを合計する方法【SUM()とMONTH()関数の使い方】

    MySQLで今月のレコードを合計する方法MySQLで今月のレコードを合計するには、SUM()関数とMONTH()関数を組み合わせて使用します。ここでは、サンプルテーブルを作成し、実際にデータを集計する手順を順番に解説します。1. テーブルを作成するまず、日付と金額を格納するテーブルを作成しましょう。mysql> create table DemoTable1889    (    DueDate date,    Amount int