表格如下所示:
| colA | colB | colC | colD |some other cols
-----------------------------
|double|double| int | int |some other datatyps
我想选择每列的总和并按它们分组。目前我没有必须真实的条件。这是我的查询:
SELECT SUM(colA) as 'cola', SUM(colB)as 'colb', SUM(colC) as 'colc', SUM(colD) as 'cold', SUM(colA - colB)as 'sub'
FROM table_name
GROUP BY cola,colb,colc,cold,sub
然后它会创建错误:组函数的使用无效
我红色了几篇关于这个错误的帖子,但它们都有一个 WHERE 条件和一个 HAVING 解决了这个问题,但我没有条件。有什么想法可能导致此错误消息吗?
最佳答案
您根本不需要 GROUP BY
子句:
SELECT SUM(t.colA) as 'cola',
SUM(t.colB)as 'colb',
SUM(t.colC) as 'colc',
SUM(t.colD) as 'cold',
SUM(t.colA - t.colB)as 'sub'
FROM table_name t
GROUP BY
子句用于获取每个 GROUP
的计算/聚合/不同值,如 ID
,因为您想要总计总而言之,不需要 group by
子句
GROUP BY cola,colb,colc,cold,sub
这一行意味着每个组都是 cola,colb,colc,cold,sub
的组合,但由于 sub
是一个计算列,所以还不存在!不要将其包含在您的组中
如果您想区分重复项,请使用 DISTINCT
,或从分组依据中删除 sub
列:
GROUP BY t.cola,t.colb,t.colc,t.cold
关于mysql - 群组功能使用无效(无条件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37653089/