MySQL子查询只返回顶行的结果

MySQL子查询只返回顶行的结果,mysql,subquery,Mysql,Subquery,我不知道如何做一些我确信很简单的事情。我有以下代码: 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 savingsac

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

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的余额占所有余额的百分比。但是,获取所有余额总数的子查询不起作用,因为它只返回顶行上的一个数字。我假设我的错误在连接逻辑的某个地方?

所以我真的有一个完整的大脑放屁。我需要更多的睡眠

我的查询的答案只是将子查询包含在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

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

您的子查询将返回一个“随机”值ENCODEDKEY以与总和匹配,然后将其用于联接。从子查询SELECT中删除ENCODEDKEY,删除连接的ON子句,并使用交叉连接而不是左外部连接,因为那里应该始终有一条记录。这应该可以