I created a test table
CREATE TABLE `test` (
`id` INT(11) NULL DEFAULT NULL,
`date` DATE NULL DEFAULT NULL,
`name` CHAR(50) NULL DEFAULT NULL,
`count1` SMALLINT(6) NULL DEFAULT NULL,
`count2` SMALLINT(6) NULL DEFAULT NULL,
`count3` SMALLINT(6) NULL DEFAULT NULL
);
and the closest I get are two posibilities :
SELECT GROUP_CONCAT(DISTINCT date , name,':', JSON_OBJECT("count1", count1,'count2', count2,'count3', count3),'}') FROM test GROUP BY date ORDER BY date;
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| GROUP_CONCAT(DISTINCT date , name,':', JSON_OBJECT("count1", count1,'count2', count2,'count3', count3),'}') |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 2019-01-01name1:{"count1": 8, "count2": 10, "count3": 5}},2019-01-01name2:{"count1": 12, "count2": 5, "count3": 20}},2019-01-01name3:{"count1": 15, "count2": 5, "count3": 10}} |
| 2019-01-02name4:{"count1": 12, "count2": 5, "count3": 40}},2019-01-02name5:{"count1": 3, "count2": 5, "count3": 10}} |
| 2019-01-03name6:{"count1": 10, "count2": 2, "count3": 7}} |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
and
SELECT GROUP_CONCAT( DISTINCT date ,JSON_OBJECT(name , JSON_OBJECT("count1", count1,'count2', count2,'count3', count3))) FROM test GROUP BY date ORDER BY date;
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| GROUP_CONCAT( DISTINCT date ,JSON_OBJECT(name , JSON_OBJECT("count1", count1,'count2', count2,'count3', count3))) |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 2019-01-01{"name1": {"count1": 8, "count2": 10, "count3": 5}},2019-01-01{"name2": {"count1": 12, "count2": 5, "count3": 20}},2019-01-01{"name3": {"count1": 15, "count2": 5, "count3": 10}} |
| 2019-01-02{"name4": {"count1": 12, "count2": 5, "count3": 40}},2019-01-02{"name5": {"count1": 3, "count2": 5, "count3": 10}} |
| 2019-01-03{"name6": {"count1": 10, "count2": 2, "count3": 7}} |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
it is not 100% what you want but that's all I know