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

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())を組み合わせることで、月別の売上や支払額などの集計を簡単に実現できます。

  1. MySQLで月を指定してデータを抽出する方法(MONTH()関数の使い方)

    MySQLで日付データから特定の「月」に該当するレコードだけを抽出したい場合は、MONTH()関数を使うのが便利です。この記事では、実際にテーブルを作成し、サンプルデータを挿入しながら、月を条件にしたSELECT文の書き方を具体的に解説します。1. サンプルテーブルの作成まずは、出荷日(Shippingdate)を格納するdatetime型のカラムを持つテーブルを作成します。mysql> create table DemoTable1599    -> (    -> Shippingdate d

  2. 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)ここでは、学生名を