我有这个查询:
SELECT YEAR(datetime) AS Year, WEEK(datetime) AS Week, COUNT(*) AS total
FROM table
GROUP BY Year, Week;
结果是:
+------+------+-------+
| Year | Week | total |
+------+------+-------+
| 2016 | 49 | 14 |
| 2016 | 50 | 20 |
| 2016 | 51 | 19 |
| 2016 | 52 | 15 |
| 2017 | 1 | 13 |
| 2017 | 2 | 14 |
| 2017 | 3 | 12 |
| 2017 | 4 | 12 |
| 2017 | 5 | 5
但我想知道如何以“更美丽”的方式展示这一周,例如:
+------+----------+-------+
| Year | Week | total |
+------+----------+-------+
| 2016 | Dec 05 | 14 |
| 2016 | Dec 12 | 20 |
| 2016 | Dec 19 | 19 |
| 2016 | Dec 26 | 15 |
| 2017 | Jan 02 | 13 |
| 2017 | Jan 09 | 14 |
| 2017 | Jan 16 | 12 |
| 2017 | Jan 23 | 12 |
| 2017 | Jan 30 | 5 |
+------+----------+-------+
您可以使用 DATE_FORMAT 函数完成此操作,
接受的解决方案对我不起作用,因为它不是每周分组,但它可以在同一周内获得行,例如:
使用子查询似乎有效:
要按周分组并显示一周的第一天,您可以按照所示进行。从您存储的日期中减去星期几,然后根据需要格式化日期。然后,您可以按新的“日期”值分组,瞧!
结果
我认为这是最好的建议。