Computer >> Máy Tính >  >> Lập trình >> MySQL

Chọn và lọc các bản ghi trên cơ sở tháng trong một bảng MySQL?

Bạn có thể sử dụng hàm tổng hợp SUM () với mệnh đề GROUP BY để đạt được điều này.

Hãy để chúng tôi tạo một bảng. Truy vấn để tạo bảng như sau -

mysql> create table SelectPerMonthDemo
   -> (
   -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   -> Price int,
   -> PurchaseDate datetime
   -> );
Query OK, 0 rows affected (2.34 sec)

Ví dụ

Chèn một số bản ghi trong bảng bằng lệnh insert với một trong số chúng sẽ là ngày mua. Truy vấn như sau -

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)

Hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng một câu lệnh chọn. Truy vấn như sau -

mysql> select *from SelectPerMonthDemo;

Đầu ra

Sau đây là kết quả hiển thị giá và ngày mua của sản phẩm -

+----+-------+---------------------+
| 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)

Đây là truy vấn để lấy các bản ghi theo từng tháng dựa trên Ngày mua -

mysql> select monthname(PurchaseDate) as MONTHNAME,sum(Price) from
SelectPerMonthDemo
-> group by monthname(PurchaseDate);

Đầu ra

+-----------+------------+
| MONTHNAME | sum(Price) |
+-----------+------------+
| January | 1800 |
| April | 600 |
| February | 400 |
| May | 800 |
| June | 1000 |
+-----------+------------+
5 rows in set (0.07 sec)

Nếu bạn không muốn tên tháng (chỉ số tháng), hãy sử dụng truy vấn sau -

mysql> select month(PurchaseDate),sum(Price) from SelectPerMonthDemo
-> group by month(PurchaseDate);

Đầu ra

+---------------------+------------+
| month(PurchaseDate) | sum(Price) |
+---------------------+------------+
| 1 | 1800 |
| 4 | 600 |
| 2 | 400 |
| 5 | 800 |
| 6 | 1000 |
+---------------------+------------+
5 rows in set (0.00 sec)