MySQLテーブルの月ベースでレコードを選択してフィルタリングしますか?
これを実現するには、GROUP BY句を指定した集計関数SUM()を使用できます。
テーブルを作成しましょう。テーブルを作成するためのクエリは次のとおりです-
mysql> create table SelectPerMonthDemo -> ( -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> Price int, -> PurchaseDate datetime -> ); Query OK, 0 rows affected (2.34 sec)
例
挿入コマンドを使用してテーブルにいくつかのレコードを挿入し、そのうちの1つが購入日となります。クエリは次のとおりです-
mysql> insert into SelectPerMonthDemo(Price,PurchaseDate) values(600,date_add(now(), interval -1 month)); Query OK, 1 row affected (0.42 sec) mysql> insert into SelectPerMonthDemo(Price,PurchaseDate) values(600,date_add(now(), interval 2 month)); Query OK, 1 row affected (0.34 sec) mysql> insert into SelectPerMonthDemo(Price,PurchaseDate) values(400,now()); Query OK, 1 row affected (0.20 sec) mysql> insert into SelectPerMonthDemo(Price,PurchaseDate) values(800,date_add(now(), interval 3 month)); Query OK, 1 row affected (0.13 sec) mysql> insert into SelectPerMonthDemo(Price,PurchaseDate) values(900,date_add(now(), interval 4 month)); Query OK, 1 row affected (0.10 sec) mysql> insert into SelectPerMonthDemo(Price,PurchaseDate) values(100,date_add(now(), interval 4 month)); Query OK, 1 row affected (0.22 sec) mysql> insert into SelectPerMonthDemo(Price,PurchaseDate) values(1200,date_add(now(), interval -1 month)); Query OK, 1 row affected (0.09 sec)
selectステートメントを使用して、テーブルのすべてのレコードを表示します。クエリは次のとおりです-
mysql> select *from SelectPerMonthDemo;
出力
以下は、製品の価格と購入日を表示する出力です-
+----+-------+---------------------+ | Id | Price | PurchaseDate | +----+-------+---------------------+ | 1 | 600 | 2019-01-10 22:39:30 | | 2 | 600 | 2019-04-10 22:39:47 | | 3 | 400 | 2019-02-10 22:40:03 | | 4 | 800 | 2019-05-10 22:40:18 | | 5 | 900 | 2019-06-10 22:40:29 | | 6 | 100 | 2019-06-10 22:40:41 | | 7 | 1200 | 2019-01-10 22:40:50 | +----+-------+---------------------+ 7 rows in set (0.00 sec)
これは、購入日に基づいて個々の月ごとにレコードを取得するためのクエリです-
mysql> select monthname(PurchaseDate) as MONTHNAME,sum(Price) from SelectPerMonthDemo -> group by monthname(PurchaseDate);
出力
+-----------+------------+ | MONTHNAME | sum(Price) | +-----------+------------+ | January | 1800 | | April | 600 | | February | 400 | | May | 800 | | June | 1000 | +-----------+------------+ 5 rows in set (0.07 sec)
月の名前(月番号のみ)が必要ない場合は、次のクエリを使用します-
mysql> select month(PurchaseDate),sum(Price) from SelectPerMonthDemo -> group by month(PurchaseDate);
出力
+---------------------+------------+ | month(PurchaseDate) | sum(Price) | +---------------------+------------+ | 1 | 1800 | | 4 | 600 | | 2 | 400 | | 5 | 800 | | 6 | 1000 | +---------------------+------------+ 5 rows in set (0.00 sec)
-
現在の日付とMySQLテーブルの日付レコードの違いを見つける
違いを見つけるには、DATEDIFF()メソッドを使用します。まずテーブルを作成しましょう- mysql> create table DemoTable1446 -> ( -> DueDate date -> ); Query OK, 0 rows affected (1.42 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable1446 values('2019-01-21'); Que
-
月に基づいてMySQLテーブルから合計を選択します
このために、GROUP BY MONTH()を使用できます。まずテーブルを作成しましょう- mysql> create table DemoTable1628 -> ( -> PurchaseDate date, -> Amount int -> ); Query OK, 0 rows affected (1.55 sec) 挿入コマンドを使用して、テーブルにいくつかのレコードを挿入します。 mysql> insert into DemoTabl