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

MySQLで当月・当年の初めからのバウチャー値の合計を集計する方法

MySQLで「今月の初めから」や「今年の初めから」の期間に含まれるデータを対象に、バウチャー値(VoucherValue)の合計を求めたい場合には、MONTH() 関数と YEAR() 関数を組み合わせて使うのが便利です。この記事では、実際にテーブルを作成し、サンプルデータを挿入しながら、具体的なSQLクエリの書き方を順番に解説していきます。

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

まずは、バウチャー値とチャージ日付を格納するテーブルを作成しましょう。

mysql> create table DemoTable1562
    -> (
    -> VoucherValue int,
    -> RechargeDate date
    -> );
Query OK, 0 rows affected (1.40 sec)

2. テストデータの挿入

次に、INSERT文を使っていくつかのレコードを登録します。ここでは、2019年10月と2018年10月の日付が混在したデータを用意しています。

mysql> insert into DemoTable1562 values(149,'2019-10-21');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable1562 values(199,'2019-10-13');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable1562 values(399,'2018-10-13');
Query OK, 1 row affected (0.25 sec)
mysql> insert into DemoTable1562 values(450,'2019-10-13');
Query OK, 1 row affected (0.20 sec)

3. 登録データの確認

SELECT文で全レコードを表示して、正しく登録されているか確認します。

mysql> select * from DemoTable1562;

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

+--------------+--------------+
| VoucherValue | RechargeDate |
+--------------+--------------+
|         149 | 2019-10-21   |
|         199 | 2019-10-13   |
|         399 | 2018-10-13   |
|         450 | 2019-10-13   |
+--------------+--------------+
4 rows in set (0.00 sec)

4. 現在日付の確認

CURDATE() 関数で現在の日付を確認しておきます。

mysql> select curdate();
+------------+
| curdate()  |
+------------+
| 2019-10-13 |
+------------+
1 row in set (0.00 sec)

5. 当月の初めからのバウチャー値合計を求めるクエリ

ここが本題です。SUM() 関数と WHERE 句を組み合わせて、「月が現在の月と一致」かつ「年が現在の年と一致」という条件を指定します。

mysql> select sum(VoucherValue) from DemoTable1562
    -> where month(RechargeDate)=month(curdate())
    -> and year(RechargeDate)=year(curdate());

このクエリを実行すると、以下のような結果が得られます。

+-------------------+
| sum(VoucherValue) |
+-------------------+
|              798 |
+-------------------+
1 row in set (0.00 sec)

結果のポイント

出力された合計値は 798 です。これは、149 + 199 + 450 の3件分です。2018年10月13日のレコード(399)は「月」は同じ10月ですが「年」が異なるため、YEAR() 関数による条件によって除外されています。

まとめ

このように、MONTH()YEAR()CURDATE() と比較することで、「今月かつ今年」のデータだけを簡単に抽出できます。売上集計やチャージ履歴の月次レポートなど、実務でもよく使われるパターンなので、ぜひ覚えておきましょう。

  1. PHPのdate_parse()関数でタイムスタンプから日・月・年を抽出する方法

    date_parse()関数でタイムスタンプを解析するPHPでタイムスタンプ(日時文字列)から日・月・年を抽出するには、date_parse() 関数を使用します。この関数は日時文字列を解析し、年・月・日・時・分・秒などの情報を連想配列として返してくれます。基本構文は以下の通りです。print_r(date_parse(anyTimeStampValue));サンプルコード具体的なタイムスタンプ値を解析するPHPコードは以下のようになります。$yourTimeStampValue="2019-02-04 12:56:50"; print_r(date_parse($your

  2. 【初心者向け】MySQLオプションの基本!値の指定方法と「=」記号のルールを解説

    本記事では、MySQLにおけるオプションのデフォルト動作、値を必要とするオプション、そして「=」(イコール)記号の扱いについて詳しく解説します。 値を指定するオプションの基本的な書き方 慣例として、値を設定する形式のロングオプションは「=」記号を使って記述します。以下のように書くのが一般的です。 mysql --host=tonfisk --user=jon 一方、値が必須となるオプション(デフォルト値を持たないオプション)については、「=」記号は必須ではありません。つまり、スペース区切りで次のように書いても正しく動作します。 mysql --host tonfisk --user jon