📄 banking-demo.sql
字号:
set heading off
select '- - - - - - - - - - - - - - - - - - - - - - - - - - - -'
from dual;
select 'All customer data.' from dual;
select *
from customer
;
select '- - - - - - - - - - - - - - - - - - - - - - - - - - - -'
from dual;
select 'All branch data.' from dual;
select *
from branch
;
select '- - - - - - - - - - - - - - - - - - - - - - - - - - - -'
from dual;
select 'All account data.' from dual;
select *
from account
;
select '- - - - - - - - - - - - - - - - - - - - - - - - - - - -'
from dual;
select 'All depositor data.' from dual;
select *
from depositor
;
select '- - - - - - - - - - - - - - - - - - - - - - - - - - - -'
from dual;
select 'All loan data.' from dual;
select *
from loan
;
select '- - - - - - - - - - - - - - - - - - - - - - - - - - - -'
from dual;
select 'All borrower data.' from dual;
select *
from borrower
;
select '- - - - - - - - - - - - - - - - - - - - - - - - - - - -'
from dual;
select 'Names and cities of all borrowers' from dual;
select distinct customer.customer_name, customer_city
from borrower, customer
where borrower.customer_name = customer.customer_name
;
select '- - - - - - - - - - - - - - - - - - - - - - - - - - - -'
from dual;
select 'Set of names and cities of customers who have a loan at Perryridge branch' from dual;
select distinct C.customer_name, customer_city
from customer C, borrower B, loan L
where C.customer_name = B.customer_name and
B.loan_number = L.loan_number and
branch_name = 'Perryridge'
;
select '- - - - - - - - - - - - - - - - - - - - - - - - - - - -'
from dual;
select 'Numbers of accounts with balances between 700 and 900.'
from dual;
select account_number
from account
where balance between 700 and 900
;
select '- - - - - - - - - - - - - - - - - - - - - - - - - - - -'
from dual;
select 'Names of customers on streets with names ending in "Hill".'
from dual;
select customer_name
from customer
where customer_street like '%Hill'
;
select '- - - - - - - - - - - - - - - - - - - - - - - - - - - -'
from dual;
select 'Names of customers with both accounts and loans at Perryridge branch.'
from dual;
select distinct customer_name
from borrower, loan
where borrower.loan_number = loan.loan_number and
branch_name = 'Perryridge' and
customer_name in (select customer_name
from account, depositor
where account.account_number =
depositor.account_number and
branch_name = 'Perryridge')
;
select '- - - - - - - - - - - - - - - - - - - - - - - - - - - -'
from dual;
select 'Names of customers with an account but not a loan at Perryridge branch.'
from dual;
select distinct customer_name
from account, depositor
where account.account_number = depositor.account_number and
branch_name = 'Perryridge' and
customer_name not in (select customer_name
from loan, borrower
where loan.loan_number =
borrower.loan_number and
branch_name = 'Perryridge')
;
select '- - - - - - - - - - - - - - - - - - - - - - - - - - - -'
from dual;
select 'Names and cities of all borrowers.' from dual;
select distinct C.customer_name, customer_city
from borrower B, customer C
where B.customer_name = C.customer_name
;
select '- - - - - - - - - - - - - - - - - - - - - - - - - - - -' from dual;
select 'Set of names of customers with accounts at a branch where Hayes has'
from dual;
select 'An account.' from dual;
select distinct D.customer_name
from depositor D, account A
where D.account_number = A.account_number and
branch_name in
(select branch_name
from depositor Dh, account Ah
where Dh.account_number = Ah.account_number and
D.customer_name = 'Hayes')
;
select '- - - - - - - - - - - - - - - - - - - - - - - - - - - -'
from dual;
select 'Set of names of branches whose assets are greater than the assets of'
from dual;
select 'some branch in Brooklyn' from dual;
select distinct T.branch_name
from branch T, branch S
where T.assets > S.assets and
S.branch_city = 'Brooklyn'
;
select '- - - - - - - - - - - - - - - - - - - - - - - - - - - -'
from dual;
select 'Set of names of branches whose assets are greater than the assets of'
from dual;
select 'All branches in Brooklyn' from dual;
select branch_name
from branch
where assets > all
(select assets
from branch
where branch_city = 'Brooklyn')
;
select '- - - - - - - - - - - - - - - - - - - - - - - - - - - -'
from dual;
select 'Names of customers with both accounts and loans at Perryridge branch'
from dual;
select '(using "exists").' from dual;
select customer_name
from customer
where exists (select *
from account, depositor
where account.account_number = depositor.account_number and
depositor.customer_name =
customer.customer_name and
branch_name = 'Perryridge')
and exists (select *
from loan, borrower
where loan.loan_number = borrower.loan_number and
borrower.customer_name =
customer.customer_name and
branch_name = 'Perryridge')
;
select '- - - - - - - - - - - - - - - - - - - - - - - - - - - -'
from dual;
select 'Names of customers with an account but not a loan at Perryridge branch'
from dual;
select '(using "exists").' from dual;
select customer_name
from customer
where exists (select *
from account, depositor
where account.account_number = depositor.account_number and
depositor.customer_name = customer.customer_name and
branch_name = 'Perryridge')
and not exists (select *
from loan, borrower
where loan.loan_number = borrower.loan_number and
borrower.customer_name = customer.customer_name and
branch_name = 'Perryridge')
;
select '- - - - - - - - - - - - - - - - - - - - - - - - - - - -'
from dual;
select 'Set of names of customers at Perryridge branch, in alphabetical order.'
from dual;
select distinct customer_name
from borrower, loan, branch
where borrower.loan_number = loan.loan_number and
loan.branch_name = 'Perryridge'
order by borrower.customer_name
;
select '- - - - - - - - - - - - - - - - - - - - - - - - - - - -'
from dual;
select 'Loan data, ordered by decreasing amounts, then increasing loan numbers.'
from dual;
select *
from loan
order by amount desc, loan_number asc
;
select '- - - - - - - - - - - - - - - - - - - - - - - - - - - -'
from dual;
select 'Names of branches having at least one account, with average account balances.'
from dual;
select branch_name, avg(balance)
from account
group by branch_name
;
select '- - - - - - - - - - - - - - - - - - - - - - - - - - - -'
from dual;
select 'Names of branches having at least one account, with size of set of customers'
from dual;
select 'having at least one account at that branch.' from dual;
select branch_name, count(distinct customer_name)
from depositor, account
where depositor.account_number = account.account_number
group by branch_name
;
select '- - - - - - - - - - - - - - - - - - - - - - - - - - - -'
from dual;
select 'The average balance of all accounts.' from dual;
select avg(balance)
from account
;
select '- - - - - - - - - - - - - - - - - - - - - - - - - - - -'
from dual;
select 'Names of branches having at least one account, with average balances of'
from dual;
select 'Accounts at each branch, if that average is above 700.'
from dual;
select branch_name, avg(balance)
from account
group by branch_name
having avg(balance) > 700
;
select '- - - - - - - - - - - - - - - - - - - - - - - - - - - -'
from dual;
select 'Name(s) of branch(es) having largest average balance.'
from dual;
select branch_name
from account
group by branch_name
having avg(balance) >= all(select avg(balance)
from account
group by branch_name)
;
select '- - - - - - - - - - - - - - - - - - - - - - - - - - - -'
from dual;
select 'The number of customers.' from dual;
select count (*)
from customer
;
select '- - - - - - - - - - - - - - - - - - - - - - - - - - - -'
from dual;
select 'Average balance of all customers in Harrison having at least 2 accounts.'
from dual;
select avg(balance)
from depositor, account, customer
where depositor.customer_name = customer.customer_name and
depositor.account_number = account.account_number and
customer_city = 'Harrison'
group by depositor.customer_name
having count (distinct account.account_number) >= 2
;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -