MySQL 仅子查询 returns 结果在第一行

MySQL sub-query only returns result on top row

我不知道如何做一些我确信很简单的事情。我有以下代码:

SELECT SA.ACCOUNTHOLDERKEY
,SA.BALANCE
,`TOT`.TOTAL_BALANCE
,(SA.BALANCE/`TOT`.TOTAL_BALANCE)*100 AS PERCENT_OVER_FSCS_LIMIT

FROM savingsaccount SA
LEFT JOIN (SELECT
SUM(BALANCE) AS TOTAL_BALANCE
,ENCODEDKEY
FROM
savingsaccount
 ) AS `TOT` ON TOT.ENCODEDKEY= SA.ENCODEDKEY


where accountstate = 'ACTIVE'
GROUP BY SA.ACCOUNTHOLDERKEY

如您所见,我正在尝试计算每个 ACCOUNTHOLDERKEY 的余额占所有余额总和的百分比。然而,获取所有余额总和的子查询不起作用,因为它只有 returns 第一行的数字。我假设我的错误是在连接逻辑中的某个地方?

感叹

所以我真的是脑子放​​屁了。我需要更多的睡眠!

我的查询的答案只是将子查询包含在 select 语句中:

SELECT SA.ACCOUNTHOLDERKEY
,(SELECT
sum(balance)
from
savingsaccount
WHERE
ACCOUNTSTATE = 'ACTIVE') AS TOTAL_DEPOSIT_BALANCE

FROM savingsaccount SA

where accountstate = 'ACTIVE'
GROUP BY SA.ACCOUNTHOLDERKEY

您可以使用交叉连接:-

SELECT SA.ACCOUNTHOLDERKEY
        ,SA.BALANCE
        ,`TOT`.TOTAL_BALANCE
        ,(SA.BALANCE/`TOT`.TOTAL_BALANCE)*100 AS PERCENT_OVER_FSCS_LIMIT
FROM savingsaccount SA
CROSS JOIN 
(
    SELECT SUM(BALANCE) AS TOTAL_BALANCE
    FROM savingsaccount
) AS `TOT`
WHERE accountstate = 'ACTIVE'
GROUP BY SA.ACCOUNTHOLDERKEY

如果您有任何行从主查询返回,那么子查询总会有一行,那么这将起作用。