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)