MySQLで今月のレコードを合計する方法【SUM()とMONTH()関数の使い方】
MySQLで今月のレコードを合計する方法
MySQLで今月のレコードを合計するには、SUM()関数とMONTH()関数を組み合わせて使用します。ここでは、サンプルテーブルを作成し、実際にデータを集計する手順を順番に解説します。
1. テーブルを作成する
まず、日付と金額を格納するテーブルを作成しましょう。
mysql> create table DemoTable1889
(
DueDate date,
Amount int
);
Query OK, 0 rows affected (0.00 sec)
2. レコードを挿入する
続いて、insertコマンドを使用してテーブルにいくつかのレコードを挿入します。
mysql> insert into DemoTable1889 values('2019-12-11',500);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1889 values('2019-11-11',1000);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1889 values('2018-12-04',700);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1889 values('2017-12-10',300);
Query OK, 1 row affected (0.00 sec)3. テーブルの内容を確認する
selectステートメントで、テーブル内のすべてのレコードを表示してみましょう。
mysql> select * from DemoTable1889;
上記のクエリを実行すると、次のような出力が得られます。
+------------+--------+
| DueDate | Amount |
+------------+--------+
| 2019-12-11 | 500 |
| 2019-11-11 | 1000 |
| 2018-12-04 | 700 |
| 2017-12-10 | 300 |
+------------+--------+
4 rows in set (0.00 sec)
4. 現在の日付を確認する
集計の基準となる現在の日付を確認しておきます。
mysql> select curdate();
+------------+
| curdate() |
+------------+
| 2019-12-10 |
+------------+
1 row in set (0.00 sec)
5. 今月のレコードを合計するクエリ
MySQLで今月のレコードの合計を求めるクエリは以下の通りです。
mysql> select sum(Amount) from DemoTable1889 where MONTH(DueDate)=MONTH(curdate());
実行結果は次のようになります。
+-------------+
| sum(Amount) |
+-------------+
| 1500 |
+-------------+
1 row in set (0.00 sec)
結果の解説と注意点
この結果から、DueDateの月が現在の月(12月)と一致するレコード、つまり「2019-12-11の500」「2018-12-04の700」「2017-12-10の300」の合計である1500が取得できたことがわかります。
なお、MONTH()関数だけを条件にすると、年に関係なく同じ月のデータがすべて集計対象になる点に注意が必要です。特定の年のデータだけを合計したい場合は、YEAR()関数も組み合わせて、次のように条件を追加するとよいでしょう。
mysql> select sum(Amount) from DemoTable1889
where MONTH(DueDate)=MONTH(curdate())
and YEAR(DueDate)=YEAR(curdate());
このように、SUM()とMONTH()(必要に応じてYEAR())を組み合わせることで、月別の売上や支払額などの集計を簡単に実現できます。
-
MySQLで月を指定してデータを抽出する方法(MONTH()関数の使い方)
MySQLで日付データから特定の「月」に該当するレコードだけを抽出したい場合は、MONTH()関数を使うのが便利です。この記事では、実際にテーブルを作成し、サンプルデータを挿入しながら、月を条件にしたSELECT文の書き方を具体的に解説します。1. サンプルテーブルの作成まずは、出荷日(Shippingdate)を格納するdatetime型のカラムを持つテーブルを作成します。mysql> create table DemoTable1599 -> ( -> Shippingdate d
-
MySQLで重複レコードの値をSUM関数とGROUP BYで合計する方法
MySQLでは、GROUP BY句とSUM関数を組み合わせることで、重複しているレコードの値をグループごとにまとめて合計できます。この記事では、学生名ごとに点数を集計する具体例を通して、その手順をわかりやすく解説します。1. テーブルの作成まず、サンプル用のテーブルを作成します。mysql> create table DemoTable -> ( -> StudentName varchar(20), -> StudentMarks int -> );Query OK, 0 rows affected (0.68 sec)ここでは、学生名を