表格如下:
| 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解决了这个问题,但我没有条件。什么可能导致此错误消息?
答案 0 :(得分:0)
您根本不需要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
答案 1 :(得分:0)
您的错误是您在组中包含表中不存在的子。
所以试试这个:
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