我有一个表格,其中一列名为' created_at'。现在我希望按月分组所有记录,并从当月开始按月分组。
这是我到目前为止所写的MySQL查询:
SELECT count(id),MONTH(created_at) as month
FROM `perks`
GROUP BY created_at
ORDER BY MONTH(created_at)
并且输出是:
我需要一个月8月(8),因为它是当前月份,然后是9,10,11,12,1,2 ......等等。
任何好友都可以帮忙解决这个问题吗?
答案 0 :(得分:1)
正如jaymin所说,你需要按月分组,而不是时间
GROUP BY MONTH(created_at)
此外,如果之前有时需要排除,请使用where子句:
WHERE created_at > current_date()
如果您的数据包含明年的日期,您可能需要group by year(created_at), month(created_at)
并按此顺序排序,除非您不关心明年8月将会推迟到今年8月等等。
如果打算将所有内容整合在一起,并且从当月开始整整一个月,您需要:
ORDER BY CASE WHEN MONTH(created_at) >= MONTH(current_date()) THEN 1 ELSE 2, MONTH(created_at)
答案 1 :(得分:0)
您可以使用
GROUP BY MONTH(CURRENT_DATE())