【问题标题】:MySQL: Error 1055 When attempting to Return Count of Referrer by Month in Year 2020MySQL:尝试在 2020 年按月返回引用者计数时出现错误 1055
【发布时间】:2023-04-07 11:09:01
【问题描述】:

我收到以下错误代码:

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

此代码是我尝试运行以下查询的结果,该查询应该返回 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;

我的表格的列如下所示:

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

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

我正在使用 MySQL 工作台运行此查询。

【问题讨论】:

    标签: mysql date workbench


    【解决方案1】:

    正如错误提示,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 -^
    

    【讨论】:

    • 成功了!太感谢了!我只是在学习来自 popsql.com 的教程,他们并不清楚要求这个 MONTH(day) 出现在所有“by”子句中。现在我会记住这一点!
    猜你喜欢
    • 1970-01-01
    • 2017-11-21
    • 2014-01-21
    • 1970-01-01
    • 2021-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-05
    相关资源
    最近更新 更多