SQL-选择与其他数学运算求和

SQL-选择与其他数学运算求和,sql,sum,Sql,Sum,在select语句中,我有与SUM()关联的数学运算。 比如说, select SUM(A * (B) / C) - (D + E + F) from MyTable where cond1 = cond1 and cond2 = cond2; 通过在SQLDev下运行此命令,它会向我询问一个groupby选项,这应该是不需要的。 通过添加它,将显示另一条错误消息 有人能帮忙吗?SUM()函数中有A、B和C列。但是D,E和F不在和中()。您应该按不在SUM中的列进行分组,即表D、

在select语句中,我有与SUM()关联的数学运算。 比如说,

select SUM(A * (B) / C) - (D + E + F) 
from   MyTable
where  cond1 = cond1
and    cond2 = cond2;
通过在SQLDev下运行此命令,它会向我询问一个groupby选项,这应该是不需要的。 通过添加它,将显示另一条错误消息


有人能帮忙吗?

SUM()函数中有A、B和C列。但是D,E和F不在和中()。您应该按不在SUM中的列进行分组,即表D、e、F

SUM()函数中有A、B和C列。但是D,E和F不在和中()。您应该按不在SUM中的列进行分组,即表D、e、F

您的表达式包含一个聚合
SUM(A*(B)/C)
,该聚合覆盖所有行,从而生成一个结果行(因为缺少
GROUP BY
子句)

它还包含
(D+E+F)
,它们似乎是单行中的值

DBMS抱怨它不知道从哪一行获取值D、E和F


也许您想对完整的表达式进行求和((A*(B)/C)-(D+E+F))?

您的表达式包含一个聚合
求和(A*(B)/C)
,它在所有行上生成一个结果行(因为缺少
GROUP BY
子句)

它还包含
(D+E+F)
,它们似乎是单行中的值

DBMS抱怨它不知道从哪一行获取值D、E和F


也许您想对完整的表达式求和((A*(B)/C)-(D+E+F))?

对于您可能需要的内容,有不同的选项。这里有三种可能性:

select SUM(A * (B) / C) - (D + E + F) 
from   MyTable
where  cond1 = cond1 and cond2 = cond2
group by (D + E + F);
或:

或:


您还没有提供示例数据和所需结果,因此很难说这些(或其变体)是否是您真正想要的。

对于您可能想要的内容,有不同的选项。这里有三种可能性:

select SUM(A * (B) / C) - (D + E + F) 
from   MyTable
where  cond1 = cond1 and cond2 = cond2
group by (D + E + F);
或:

或:


您尚未提供示例数据和期望的结果,因此很难说这些(或其变体)是否是您真正想要的。

请提供示例数据和期望的结果。您使用的是什么DBMS?MySQL?神谕SQL Server。。。SQL问题应始终使用DBMS标记,因为答案可能不同。请提供示例数据和所需结果。您使用的是什么DBMS?MySQL?神谕SQL Server。。。SQL问题应始终使用DBMS标记,因为答案可能不同。A、B、C、D、E是MyTable中的列。如果我使用dual中的select sum(50*(2)/100)-(6+1+3);它可以正常工作,但与原始select语句不兼容。这是因为原始表中可以有多行。你应该把他们分组。你不需要那个案例的总和@laurent<代码>从双通道中选择(50*(2)/100)-(6+1+3)将给出相同的结果。这是另一种情况。两边都应该有聚合。A、B、C、D、E是MyTable中的列。如果我使用select sum(50*(2)/100)-(6+1+3)来自dual;它可以正常工作,但与原始select语句不兼容。这是因为原始表中可以有多行。你应该把他们分组。你不需要那个案例的总和@laurent<代码>从双通道中选择(50*(2)/100)-(6+1+3)将给出相同的结果。这是另一种情况。两边都应该有聚合。你好。谢谢。我试过几种可能性,但没有结果。谢谢。我尝试了几种可能性,但没有结果
select SUM(A * (B) / C) - (max(D) + max(E) + max(F)) 
from   MyTable
where  cond1 = cond1 and cond2 = cond2;