MySQL- GROUP and COUNT by date?

You can use GROUP BY clause and COUNT() function for this. The syntax is as follows −

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

To understand the above syntax, let us create a table. The query to create a table is as follows −

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)

Now you can insert some records in the table using insert command. The query is as follows −

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)

Display all records from the table using select statement. The query is as follows −

mysql> select *from GroupAndCountByDate;

The following is the output −

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

Here is the query to GROUP and count by date −

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

The following is the output −

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

Alternate Text Gọi ngay