SQL关联两表统计总数计算百分比时报group附近语法错误如何解决
SQL语法错误排查与修复方案
原代码存在的核心问题
- 字段分隔符缺失:
select子句中cloths.id后未加逗号,与后续的shoes.id字段连在一起,导致语法解析异常 - 聚合函数别名书写错误:
count(*) cloths.id, shoes.id as total不符合SQL别名规范,无法正确给聚合结果命名 - 子句顺序错误:SQL的执行逻辑要求
GROUP BY必须放在ORDER BY之前,原代码顺序颠倒,直接触发“group附近语法错误”的提示 - 别名非法引用:同级
select子句中不能直接引用刚定义的total别名,需要直接写聚合逻辑
修正后的可执行代码
SELECT cloths.id AS cloth_id, shoes.id AS shoe_id, COUNT(*) AS total, COUNT(*) * 100.0 / SUM(COUNT(*)) OVER () AS percentage FROM cloths INNER JOIN shoes ON cloths.id = shoes.id GROUP BY cloths.id, shoes.id ORDER BY cloths.id;
逻辑说明
修正后代码可以实现两张表按id关联后,统计每个相同id的匹配记录数,同时计算该分组的记录数占全部匹配记录总数的百分比,符合你的业务需求。
内容的提问来源于stack exchange,提问作者Joethan young
相关产品推荐
相关产品推荐

