选择日期,然后将其分组

时间:2019-05-22 08:34:16

标签: mysql group-by

我试图从数据库中选择日期,然后将其分组为月和年,例如:

May 2019
June 2018
etc.

数据库 -日期是日期类型

我有此代码:

  SELECT datum, count(*) FROM zapasy GROUP BY datum

哪一天都能做到,但我不想这么做,所以我搜索了如何将它按月和年分组,而不仅仅是几天

 SELECT datum, count(*) FROM zapasy GROUP BY MONTH(datum), YEAR(datum)

我想到了这个,但是,我收到了这个愚蠢的错误

  

#1055-SELECT列表的表达式#1不在GROUP BY子句中,并且包含未聚合的列'zapasy_db_test.zapasy.datum',该列在功能上不依赖于GROUP BY子句中的列;这与sql_mode = only_full_group_by

不兼容

我不知道代码有什么问题

请给我一些建议。 谢谢

2 个答案:

答案 0 :(得分:1)

您需要选择要分组的项目。

所以

 SELECT MONTH(datum), YEAR(datum), count(*) from ...  group by MONTH(datum), YEAR(datum)

而不是基准,否则您选择的日期列中将有一天,您将从基准中获得一天,而这与计数和组无关,并且会出错,或者分组根本不起作用。

答案 1 :(得分:0)

我注意到您期望的输出格式为May 2019 etc.,您知道DATE数据类型就是这样,yyyy-mm-dd,因此,如果您确实要提取该格式,您可以尝试以下操作:

SELECT DATE_FORMAT(datum, '%b %Y') AS 'Monthyear', COUNT(*) 
FROM zapasy 
GROUP BY Monthyear;
相关问题