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

MySQL- GROUP và COUNT theo ngày?

Bạn có thể sử dụng mệnh đề GROUP BY và hàm COUNT () cho việc này. Cú pháp như sau -

SELECT yourColumnName1,yourColumnName2,..N,COUNT(*) as anyAliasName FROM yourTableName
GROUP BY yourColumnName1,yourColumnName2;

Để hiểu cú pháp trên, chúng ta hãy tạo một bảng. Truy vấn để tạo bảng như sau -

mysql> create table GroupAndCountByDate
   -> (
   -> Id int NOT NULL AUTO_INCREMENT,
   -> TripDate date,
   -> ShopId int,
   -> PRIMARY KEY(Id)
   -> );
Query OK, 0 rows affected (0.79 sec)

Bây giờ bạn có thể chèn một số bản ghi trong bảng bằng cách sử dụng lệnh insert. Truy vấn như sau -

mysql> insert into GroupAndCountByDate(TripDate,ShopId) values('2019-01-31',10);
Query OK, 1 row affected (0.52 sec)
mysql> insert into GroupAndCountByDate(TripDate,ShopId) values('2019-02-01',15);
Query OK, 1 row affected (0.17 sec)
mysql> insert into GroupAndCountByDate(TripDate,ShopId) values('2019-01-31',10);
Query OK, 1 row affected (0.23 sec)
mysql> insert into GroupAndCountByDate(TripDate,ShopId) values('2019-02-01',15);
Query OK, 1 row affected (0.31 sec)
mysql> insert into GroupAndCountByDate(TripDate,ShopId) values('2019-03-23',20);
Query OK, 1 row affected (0.15 sec)
mysql> insert into GroupAndCountByDate(TripDate,ShopId) values('2019-04-21',25);
Query OK, 1 row affected (0.20 sec)
mysql> insert into GroupAndCountByDate(TripDate,ShopId) values('2019-03-13',20);
Query OK, 1 row affected (0.16 sec)
mysql> insert into GroupAndCountByDate(TripDate,ShopId) values('2019-04-06',25);
Query OK, 1 row affected (0.17 sec)

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

mysql> select *from GroupAndCountByDate;

Sau đây là kết quả -

+----+------------+--------+
| Id | TripDate   | ShopId |
+----+------------+--------+
|  1 | 2019-01-31 |     10 |
|  2 | 2019-02-01 |     15 |
|  3 | 2019-01-31 |     10 |
|  4 | 2019-02-01 |     15 |
|  5 | 2019-03-23 |     20 |
|  6 | 2019-04-21 |     25 |
|  7 | 2019-03-13 |     20 |
|  8 | 2019-04-06 |     25 |
+----+------------+--------+
8 rows in set (0.00 sec)

Đây là truy vấn tới GROUP và đếm theo ngày -

mysql> select TripDate,ShopId,COUNT(*) as TOTALTRIP
   -> from GroupAndCountByDate
   -> group by TripDate,ShopId;

Sau đây là kết quả -

+------------+--------+-----------+
| TripDate   | ShopId | TOTALTRIP |
+------------+--------+-----------+
| 2019-01-31 |      10 |        2 |
| 2019-02-01 |      15 |        2 |
| 2019-03-23 |      20 |        1 |
| 2019-04-21 |      25 |        1 |
| 2019-03-13 |      20 |        1 |
| 2019-04-06 |      25 |        1 |
+------------+--------+-----------+
6 rows in set (0.00 sec)