基于银行数据库查找练习

--3.8 a 找出银行中所有有账户但无贷款的客户

select distinct customer_name from depositor where customer_name not in(
    select customer_name from borrower
)
--下面这个自动去掉了重复值的情况 不需要加distinct
select customer_name from depositor
except
select customer_name from borrower

--3.8 b 找出与“Smith”居住在同一个城市、同一个街道的所有客户的名字

select  customer_name from customer where customer_city in(
    select customer_city from customer where customer_name='Smith'
) and customer_street in(
    select customer_street from customer where customer_name='Smith'
)

--3.8 c 找出所有支行的名称,在这些支行中都有居住在“Harrion”的客户所开设的账户  

    select distinct branch_name from account join depositor on(account.account_number=depositor.account_number)
    where customer_name in(
        select customer.customer_name from customer
        where customer_city='Harrison'
    )

    select distinct branch_name from customer join depositor on (customer.customer_name=depositor.customer_name and customer.customer_city='Harrison') join
    account  as a on (a.account_number=depositor.account_number)
--3.15a 找出在“Brooklyn”的所有支行都有账户的所有客户

select customer_name from customer where not exists(
    select branch_name from branch where branch_city='Brooklyn'
    except
    select branch_name from account join depositor on(account.account_number=depositor.account_number)
    where depositor.customer_name=customer.customer_name
)

--3.15b 找出银行的所有贷款额的总和

select sum(amount) as sum_amount from loan

--3.15c 找出总资产至少比位于Brooklyn的某一家支行要多的所有支行的名字

select branch_name from branch where assets>=all( --这里千万别忘了写all 表示单值比较
    select assets from branch where branch_city='Brooklyn'
)
          

猜你喜欢

转载自blog.csdn.net/cyx_chen/article/details/85321912