群组功能使用无效(无条件)

Invalid use of group function (with no conditions)

table 看起来像这样:

| colA | colB | colC | colD |some other cols
-----------------------------
|double|double| int  | int  |some other datatyps

我想select每列的总和并按它们分组。目前我没有条件必须是真实的。所以这是我的查询:

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

A 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

你的错是你在分组中包含了 table 中不存在的子项。

所以试试这个:

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