Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 甲骨文-根据客户账户,哪家银行持有最多的资金_Oracle - Fatal编程技术网

Oracle 甲骨文-根据客户账户,哪家银行持有最多的资金

Oracle 甲骨文-根据客户账户,哪家银行持有最多的资金,oracle,Oracle,试图找出哪家银行持有最多的钱 SELECT * FROM bank B WHERE BSB IN (SELECT max(balance) FROM registered R, Account A WHERE R.BSB = B.BSB AND A.accountNumber = R.accountNumber); 很难说问题出在哪里,因为您没有提供一份关于发生了什么的声明,但我同意@AlexPoo

试图找出哪家银行持有最多的钱

SELECT *
FROM bank B
WHERE BSB IN (SELECT max(balance)
              FROM   registered R, Account A
              WHERE  R.BSB = B.BSB
              AND    A.accountNumber = R.accountNumber);

很难说问题出在哪里,因为您没有提供一份关于发生了什么的声明,但我同意@AlexPoole的观点,将
MAX(BALANCE)
BSB
值(分支?)进行比较可能不是您想要做的。也许以下几点将证明是有用的:

SELECT *
  FROM bank B
  WHERE BSB = (SELECT BSB
                 FROM (SELECT R.BSB, SUM(balance)
                         FROM registered R
                         INNER JOIN Account A
                           ON R.BSB = B.BSB AND
                              R.accountNumber = A.accountNumber
                         ORDER BY SUM(BALANCE) DESC)
                 WHERE ROWNUM = 1)
使用CTE(公共表表达式)的稍微干净的版本可能是:

WITH BRANCH_BALANCES AS (SELECT R.BSB, SUM(balance) AS BRANCH_BALANCE
                           FROM BANK B
                           INNER JOIN registered R
                             ON R.BSB = B.BSB
                           INNER JOIN Account A
                             ON R.accountNumber = A.accountNumber)
SELECT *
  FROM (SELECT BSB, BRANCH_BALANCE
          FROM BRANCH_BALANCES
          ORDER BY BRANCH_BALANCE DESC)
  WHERE ROWNUM = 1

祝你好运。

取决于
bank
表中有多少字段,等待最后一个可能的步骤加入并只拉取一条记录可能会有价值(我假设
bank.BSB
上有PK或至少and索引)


这个查询的问题是?所以您正在寻找恰好与最高账户余额匹配的分行号码(如果您的分行号码是这样的话)?很可能这不是你的意思,但那是你写的。如果你得到一个错误或错误的结果,说出问题所在总是很有用的;并显示表格结构、数据、当前结果和预期结果。对不起。。我会更详细地解释。。。我希望根据他们持有的账户找到持有最多资金的银行/分行。因此,我认为还应该包含一个“sum()”查询。Cheesfwiw,根据维基百科,“BSB”是澳大利亚的银行州分行代码。我不知道这里是不是这样用的,但我会同意的…:-)
with balances as (
  select
    r.BSB, sum (a.balance) as balance_total
  from
    registered r,
    account a
  where
    r.accountNumber = a.accountNumber
  group by r.BSB
),
ranked_balances as (
  select
    BSB, balance_total,
    row_number() over (order by balance_total desc) as rn
  from balances
)
select
  b.*
from
  bank b,
  ranked_balances ba
where
  b.BSB = ba.BSB and
  ba.rn = 1