我假设您有一个感兴趣的列(dt
一个 DATETIME),并且您COUNTing
有多少行来获取该表的值?
首先,执行此操作以查看您是否获得正确的值(但不是所需的布局):
SELECT HOUR(dt), WEEKDAY(dt), COUNT(*)
FROM tbl
GROUP BY HOUR(dt), WEEKDAY(dt)
ORDER BY HOUR(dt), WEEKDAY(dt);
Run Code Online (Sandbox Code Playgroud)
其次,您需要“旋转”表格。但是,您有特定的列。
请参阅http://mysql.rjweb.org/doc.php/pivot了解如何生成旋转代码。
还有一些格式问题...
对于标题,您需要将“0”变成“Mon”等。建议您对标题进行硬编码。
"23" 可以变成 "23:00 - 23:59" 加上CONCAT()
一些代码。
NULL
可以通过 变成 0 IFNULL()
。
看看你能走多远。(因为这个问题是 3 周前的,如果你已经离开了,我不想再花更多的力气了。)
就个人而言,我会使用 PHP 而不是 SQL来做(实际上已经做过)类似的事情。PHP 代码更长,但不那么扭曲。