我有疑问
SELECT DATE_FORMAT(sys_date, '%Y-%c') as month, COUNT(DATE_FORMAT(sys_date, '%Y-%c'))
FROM sale
GROUP BY month
ORDER BY month ASC返回以下结果,
month COUNT(DATE_FORMAT(sys_date, '%Y-%c'))
2017-10 204
2017-11 178
2017-12 88
2017-7 3
2017-8 1
2017-9 153
2018-1 91
2018-2 86
2018-3 67
2018-4 109
2018-5 131
2018-6 47
2018-7 50
2018-8 36
2018-9 39如何使输出按正确的升序排列?喜欢,
month COUNT(DATE_FORMAT(sys_date, '%Y-%c'))
2017-7 3
2017-8 1
2017-9 153
2017-10 204
2017-11 178
2017-12 88
2018-1 91
2018-2 86
2018-3 67
2018-4 109
2018-5 131
2018-6 47
2018-7 50
2018-8 36
2018-9 39我尝试过使用MONTH(month), YEAR(month) ASC和网站上列出的许多其他选项。但似乎什么都起不到作用。
发布于 2018-09-09 08:59:45
发布于 2018-09-09 09:23:15
这是因为计算出的month是按字母顺序排列的。但是您可以保留该ORDER BY month,只需将其更改为前导为0的格式,时间为<10个月。
这样,字符串值都将具有相同的长度,并且字母排序将是正确的。
因为当比较字符串时,“10”< '9‘但是'09’< '10‘
为此,只需将%c更改为%m即可。参考文献
另外,COUNT也可以简化。
SELECT DATE_FORMAT(sys_date, '%Y-%m') as month, COUNT(*) as Total
FROM sale
GROUP BY month
ORDER BY month如果您希望使用'%Y-%c‘格式?
然后,您可以将年份和月份的长度包含在订单中。
SELECT DATE_FORMAT(sys_date, '%Y-%c') as month, COUNT(*) as Total
FROM sale
GROUP BY YEAR(sys_date), month
ORDER BY YEAR(sys_date), LENGTH(month), monthhttps://stackoverflow.com/questions/52242875
复制相似问题