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

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)

  1. 現在の日付と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

  2. 月に基づいてMySQLテーブルから合計を選択します

    このために、GROUP BY MONTH()を使用できます。まずテーブルを作成しましょう- mysql> create table DemoTable1628     -> (     -> PurchaseDate date,     -> Amount int     -> ); Query OK, 0 rows affected (1.55 sec) 挿入コマンドを使用して、テーブルにいくつかのレコードを挿入します。 mysql> insert into DemoTabl