You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

银行数据库SQL查询需求:按支行获取储蓄账户最高余额(一行/支行)

搞定支行储蓄账户最高余额的唯一展示问题

嘿,我来帮你解决这个查询问题!你的核心需求是每个支行(唯一bid)只显示一行,对应它的储蓄账户最高余额,对吧?看你给出的未完成查询,问题主要出在没按支行ID分组,而且直接关联客户表的话,还得注意怎么匹配到最高余额对应的客户,不然很容易出现重复行或者报错。

先搞基础版:只看支行ID和最高余额

如果只需要支行ID和它的最高储蓄余额,这写法最简单,直接用GROUP BY按bid分组就行:

SELECT 
    MAX(a.balance) AS highest_balance,
    b.bid
FROM brancht b
JOIN accountt a ON b.bid = a.bid
-- 要是你的账户表有类型区分(比如储蓄/活期),记得加这句过滤储蓄账户
-- WHERE a.account_type = '储蓄'
GROUP BY b.bid;

这样每个bid绝对只会显示一行,就是该支行的最高余额。

进阶版:同时显示最高余额的客户信息

如果还得把持有这个最高余额的客户信息也展示出来,就不能直接在GROUP BY里加客户列(毕竟一个支行可能有好几个客户,只有余额最高的那个才是我们要的)。这里给你两种写法:

方法一:子查询匹配最高余额

先查每个支行的最高余额,再关联回账户和客户表找对应记录:

SELECT 
    a.balance AS highest_balance,
    b.bid,
    c.pname.firstname,
    c.pname.middleinitial,
    c.pname.lastname
FROM brancht b
JOIN accountt a ON b.bid = a.bid
JOIN customeraccount c ON a.account_id = c.account_id -- 这里假设账户和客户用account_id关联,你根据实际表结构调整
WHERE (a.bid, a.balance) IN (
    SELECT bid, MAX(balance)
    FROM accountt
    -- 同样,要过滤储蓄账户就加这句:WHERE account_type = '储蓄'
    GROUP BY bid
);

不过要注意,如果一个支行有多个账户余额都是最高值(比如两个客户都存了100万,都是支行第一),这个查询会返回多行。要是你想强制每个支行只显示一行,就用下面的窗口函数写法。

方法二:窗口函数排名取第一

用ROW_NUMBER()给每个支行的账户按余额降序排个名,取排名第一的那条:

WITH ranked_accounts AS (
    SELECT 
        a.balance,
        b.bid,
        c.pname.firstname,
        c.pname.middleinitial,
        c.pname.lastname,
        -- 按支行分组,余额从高到低排名
        ROW_NUMBER() OVER (PARTITION BY b.bid ORDER BY a.balance DESC) AS rn
    FROM brancht b
    JOIN accountt a ON b.bid = a.bid
    JOIN customeraccount c ON a.account_id = c.account_id
    -- WHERE a.account_type = '储蓄'
)
SELECT 
    balance AS highest_balance,
    bid,
    firstname,
    middleinitial,
    lastname
FROM ranked_accounts
WHERE rn = 1;

这个写法不管一个支行有多少个最高余额的账户,只会返回其中一行(如果有多个并列第一,会随机选一个,要是想都显示可以把ROW_NUMBER()换成RANK())。

为啥你原来的查询不行?

你原来的查询没加GROUP BY b.bid,而且直接拉了客户信息,数据库根本不知道怎么处理这些非聚合的客户列——同一个支行有多个客户的话,它没法确定该取哪个,要么给你报错,要么返回一堆重复的支行行,自然达不到每个bid只显示一行的要求。

内容的提问来源于stack exchange,提问作者Mia .B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:25:53