I am trying to fiddle around this answer to get a more improved output. I have a table like this
name |status
-------------
mike |yes
mike |yes
mike |no
mike |ney
john |no
john |ney
john |yes
to output something like this
name |status |total
------------------------------
mike |yes-2,no-1,ney-1 | 4
john |yes-1,no-1,ney-1 | 3
Someone suggested this answer that works great.
SELECT name, GROUP_CONCAT(totalPerStatus) AS status,
(SELECT COUNT(*) FROM mytable WHERE name = t.name) AS total
FROM (
SELECT name,
CONCAT(status, '-', COUNT(*)) AS totalPerStatus
FROM mytable
GROUP BY name, status ) t
GROUP BY name;
But I want to improve on this output to get something like this
name | yes | no | ney | total
------------------------------
mike |2 |1 |1 | 4
john |1 |1 |1 | 3