I have data like this:
+-------+--------+---------------------+
| name | status | date |
+-------+--------+---------------------+
| Peter | 100 | 2015-06-20 12:12:00 |
| Peter | 100 | 2015-06-20 15:12:00 |
| James | 100 | 2015-06-20 10:12:00 |
| James | 200 | 2015-06-20 14:12:00 |
| James | 100 | 2015-06-21 06:12:00 |
| James | 100 | 2015-06-21 09:12:00 |
| Peter | 200 | 2015-06-21 13:12:00 |
| Peter | 100 | 2015-06-21 14:12:00 |
And I want output like this:
+----------+-------+-------+-------+
| date | Peter | James | Total |
+----------+-------+-------+-------+
| 20150620 | 2 | 2 | 4 |
| 20150621 | 2 | 2 | 4 |
+----------+-------+-------+-------+
I use the select
statement below:
select DATE_FORMAT(date, "%Y%m%d") as date,
SUM(IF(name = "Peter", 1,0)) AS "Peter",
SUM(IF(name = "James", 1,0)) AS "James",
SUM(IF(name != "0", 1,0)) AS "Total"
from test group by DAYOFMONTH (date);
But what should I do if I have many name values? I can't put all names in the
select state in SUM(IF name ="????")
.