MySQL:尝试 Return 2020 年按月统计引荐来源时出现错误 1055

MySQL: Error 1055 When attempting to Return Count of Referrer by Month in Year 2020

我收到以下错误代码:

错误代码:1055。ORDER BY 子句的表达式 #1 不在 GROUP BY 子句中并且包含非聚合列 'usergrowthhomework.weblogs.day',它在功能上不依赖于 GROUP BY 子句中的列;这与 sql_mode=only_full_group_by

不兼容

此代码是我尝试 运行 以下查询的结果,该查询应该 return 'referrer' 在 2020 年每个月出现的次数:

SELECT MONTH(day) MONTH, referrer, COUNT(referrer) AS cumulative_pageviews
FROM weblogs
WHERE YEAR(day) >= '2020'
GROUP BY MONTH(day), referrer
ORDER BY day, referrer;

我的 table 的专栏如下所示:

user_no - 整数 名称 - varchar(200) 推荐人 - varchar(200) start_date - 时间戳 天 - 日期

谁能解释为什么我会收到这样的错误?我清楚地在 GROUP BY 和 SELECT 子句中包含了所有适当的表达式。

我正在使用 MySQL workbench 到 运行 这个查询。

如错误所示,order by 子句中的 day 列不在 group by 子句中,因此不能在那里使用。您应该按 MONTH(day) 来订购:

SELECT   MONTH(day) MONTH, referrer, COUNT(referrer) AS cumulative_pageviews
FROM     weblogs
WHERE    YEAR(day) >= 2020
GROUP BY MONTH(day), referrer
ORDER BY MONTH(day), referrer;
-- Here -^