在mysql中执行查询时,它显示错误代码1055,我无法解决它[关闭]

svmlkihl  于 2023-06-28  发布在  Mysql
关注(0)|答案(1)|浏览(106)

已关闭,此问题需要details or clarity。目前不接受答复。
**想改善这个问题吗?**通过editing this post添加详细信息并澄清问题。

3天前关闭。
Improve this question
我必须找出过去30天内使用的所有语言的百分比。我的查询:

SELECT 
    language,
    COUNT(language) over(order by ds rows between 29 preceding and current row) / (SELECT 
            COUNT(`language`) over(order by ds rows between  29 preceding and current row)
        FROM
            job_data) * 100 AS lang_percentage,
    COUNT(language) AS lang_count
FROM
    job_data
GROUP BY language;

MySql错误:
错误代码:1055窗口“”的PARTITION BY或ORDER BY子句的表达式#1不在GROUP BY子句中,并且包含非聚合列“p3.job_data.ds”,该列在功能上不依赖于GROUP BY子句中的列;这与sql_mode=only_full_group_by 0.000秒不兼容
请帮助我解决这个错误。还请提供任何其他可能的解决办法。
我运行上面的查询,但mysql给我一个错误代码1055,我不知道如何解决这个错误。

w8biq8rn

w8biq8rn1#

SELECT语句中的第二项不是聚合函数(它是包含聚合的Windows函数)。因此,它需要包含在GROUP BY子句中。
当你有一个GROUP BY时,SELECT中的所有项要么需要包含在GROUP BY中,要么是聚合项。
MySQL确实允许违反这个规则(我知道的DBMS中只有MySQL允许),但是从错误消息来看,您的示例似乎被设置为强制执行这个限制的模式

相关问题