MySQLで月ごとにテーブルの値を合計する方法を解説
MySQLでテーブル内の値を月ごとに合計したい場合は、EXTRACT()関数を使用します。この関数を使うことで、日付から特定の月の情報を抽出できます。例えば、年に関係なく1月のすべての価格を合計したい場合などに便利です。
サンプルテーブルの作成
まず、デモ用のテーブルを作成しましょう。
mysql> create table DemoTable1415
-> (
-> ProductPurchaseDate date,
-> ProductPrice int
-> );
Query OK, 0 rows affected (0.53 sec)テストデータの挿入
次に、INSERT文を使ってテーブルにレコードを挿入します。
mysql> insert into DemoTable1415 values('2019-01-12',560);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable1415 values('2018-01-14',1060);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable1415 values('2017-03-21',780);
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable1415 values('2016-09-01',800);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable1415 values('2019-01-14',100);
Query OK, 1 row affected (0.16 sec)登録データの確認
SELECT文ですべてのレコードを表示して確認します。
mysql> select * from DemoTable1415;
実行すると、以下のような結果が出力されます。
+---------------------+--------------+ | ProductPurchaseDate | ProductPrice | +---------------------+--------------+ | 2019-01-12 | 560 | | 2018-01-14 | 1060 | | 2017-03-21 | 780 | | 2016-09-01 | 800 | | 2019-01-14 | 100 | +---------------------+--------------+ 5 rows in set (0.00 sec)
月ごとに値を合計するクエリ
ここからが本題です。EXTRACT(MONTH FROM ...)で購入日から月を抽出し、それをGROUP BY句と組み合わせることで、月ごとの合計値を求めることができます。
mysql> select extract(MONTH from ProductPurchaseDate) as month,sum(ProductPrice) as total_value from DemoTable1415
-> group by month;実行結果は以下の通りです。
+-------+-------------+ | month | total_value | +-------+-------------+ | 1 | 1720 | | 3 | 780 | | 9 | 800 | +-------+-------------+ 3 rows in set (0.00 sec)
結果の解説
この出力を見ると、以下のことがわかります。
- 1月:2019年・2018年の1月のレコード(560 + 1060 + 100)が合算され、合計1720
- 3月:2017年3月のレコードのみで、合計780
- 9月:2016年9月のレコードのみで、合計800
このようにEXTRACT()関数を使えば、年をまたいだデータでも同じ月の値をまとめて集計できます。なお、年ごとに分けて集計したい場合は、EXTRACT(YEAR FROM ...)もGROUP BYに追加するとよいでしょう。
-
MySQLで今月のレコードを合計する方法【SUM()とMONTH()関数の使い方】
MySQLで今月のレコードを合計する方法MySQLで今月のレコードを合計するには、SUM()関数とMONTH()関数を組み合わせて使用します。ここでは、サンプルテーブルを作成し、実際にデータを集計する手順を順番に解説します。1. テーブルを作成するまず、日付と金額を格納するテーブルを作成しましょう。mysql> create table DemoTable1889 ( DueDate date, Amount int
-
MySQLでテーブルの日付レコードを変更する方法|UPDATEとDATE_ADD()の使い方
MySQLで保存済みの日付データに年数を加算して変更したい場合、UPDATEコマンドとDATE_ADD()関数を組み合わせることで簡単に実現できます。ここでは、実際のSQLクエリ例を使いながら、日付レコードを変更する手順を順番に解説します。1. テーブルを作成するまず、日付型(date)のカラムを持つテーブルを作成します。mysql> create table DemoTable1984 ( ShippingDate date ); Query OK, 0 rows affected (0.00 sec)2. レコードを挿入する次に、INSERTコマンドを使ってテ