使用SUM()而不将结果分组

我已经读过(this),但无法找到一种方法来解决我的特定问题。我知道这SUM()是一个聚合函数,不按原样使用它是没有意义的,但是在这种特定情况下,我必须SUM()在保持每一行的同时获取所有结果。

这是桌子:

--ID-- --amount--

1 23

2 11

3 8

4 7

我需要SUM()数量,但要保留每条记录,因此输出应为:

--ID-- --amount--

1 49

2 49

3 49

4 49

我有此查询,但它只对每一行求和,而不是对所有结果求和:

SELECT 

a.id,

SUM(b.amount)

FROM table1 as a

JOIN table1 as b ON a.id = b.id

GROUP BY id

没有,SUM()它只会返回一行,但是我需要维护所有ID。

注意:是的,这是一个非常基本的示例,我可以在此处使用php进行此操作,但是显然表更大,并且具有更多的行和列,但这不是重点。

回答:

SELECT a.id, b.amount

FROM table1 a

CROSS JOIN

(

SELECT SUM(amount) amount FROM table1

) b

您需要对表中的每一行之和的值执行笛卡尔连接id。由于subselect(49)只有一个结果,因此基本上只将其附加到每个结果上id

以上是 使用SUM()而不将结果分组 的全部内容, 来源链接: utcz.com/qa/428182.html

回到顶部