-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlab 3 bank.sql
More file actions
170 lines (132 loc) · 4.17 KB
/
lab 3 bank.sql
File metadata and controls
170 lines (132 loc) · 4.17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
CREATE DATABASE bank_om;
USE bank_om;
-- Branch Table\
DROP DATABASE IF EXISTS bank_om;
CREATE DATABASE bank_om;
USE bank_om;
CREATE TABLE Branch (
branch_name VARCHAR(50) PRIMARY KEY,
branch_city VARCHAR(50),
assets REAL
);
CREATE TABLE BankAccount (
accno INT PRIMARY KEY,
branch_name VARCHAR(50),
balance REAL,
FOREIGN KEY (branch_name) REFERENCES Branch(branch_name)
);
CREATE TABLE BankCustomer (
customer_name VARCHAR(50) PRIMARY KEY,
customer_street VARCHAR(50),
customer_city VARCHAR(50)
);
CREATE TABLE Depositer (
customer_name VARCHAR(50),
accno INT,
PRIMARY KEY (customer_name, accno),
FOREIGN KEY (customer_name) REFERENCES BankCustomer(customer_name),
FOREIGN KEY (accno) REFERENCES BankAccount(accno)
);
CREATE TABLE Loan (
loan_number INT PRIMARY KEY,
branch_name VARCHAR(50),
amount REAL,
FOREIGN KEY (branch_name) REFERENCES Branch(branch_name)
);
INSERT INTO Branch VALUES
('SBI_Chamrajpet', 'Bangalore', 50000),
('SBI_ResidencyRoad', 'Bangalore', 10000),
('SBI_ShivajiRoad', 'Bombay', 20000),
('SBI_ParlimentRoad', 'Delhi', 10000),
('SBI_Jantarmantar', 'Delhi', 20000);
INSERT INTO BankAccount VALUES
(1, 'SBI_Chamrajpet', 2000),
(2, 'SBI_ResidencyRoad', 5000),
(3, 'SBI_ShivajiRoad', 6000),
(4, 'SBI_ParlimentRoad', 3000),
(5, 'SBI_Jantarmantar', 8000),
(6, 'SBI_ShivajiRoad', 4000),
(8, 'SBI_ResidencyRoad', 4000),
(9, 'SBI_ParlimentRoad', 5000),
(10, 'SBI_ResidencyRoad', 5000),
(11, 'SBI_Jantarmantar', 2000);
INSERT INTO BankCustomer VALUES
('Avinash', 'Bull_Temple_Road', 'Bangalore'),
('Dinesh', 'Bannergatta_Road', 'Bangalore'),
('Mohan', 'NationalCollege_Road', 'Bangalore'),
('Nikhil', 'Akbar_Road', 'Delhi'),
('Ravi', 'Prithviraj_Road', 'Delhi');
INSERT INTO Depositer VALUES
('Avinash', 1),
('Dinesh', 2),
('Nikhil', 4),
('Ravi', 5),
('Avinash', 8),
('Nikhil', 9),
('Dinesh', 10),
('Nikhil', 11);
INSERT INTO Loan VALUES
(1, 'SBI_Chamrajpet', 1000),
(2, 'SBI_ResidencyRoad', 2000),
(3, 'SBI_ShivajiRoad', 3000),
(4, 'SBI_ParlimentRoad', 4000),
(5, 'SBI_Jantarmantar', 5000);
select * from branch;
select branch_name,assets/10 as assets_in_lakh from branch;
select customer_name,accno from depositer where accno in (select accno from bankaccount group by accno having count(distinct branch_name)>=2);
select * from depositer;
SELECT d.customer_name, ba.branch_name
FROM depositer d
JOIN bankaccount ba ON d.accno = ba.accno
GROUP BY d.customer_name, ba.branch_name
HAVING COUNT(DISTINCT d.accno) >= 2;
create view sum as select sum(amount),branch_name from loan group by(branch_name);
select* from sum;
/* i. Find all the customers who have an account at ALL branches
located in a specific city (Example: Delhi) */
SELECT d.customer_name
FROM depositer d
JOIN bankaccount ba ON d.accno = ba.accno
JOIN branch b ON ba.branch_name = b.branch_name
WHERE b.branch_city = 'Delhi'
GROUP BY d.customer_name
HAVING COUNT(DISTINCT b.branch_name) =
(SELECT COUNT(*) FROM branch WHERE branch_city = 'Delhi');
/* ii. Find all customers who have a loan at the bank
but do NOT have an account */
SELECT DISTINCT bc.customer_name
FROM bankcustomer bc
JOIN loan l ON bc.customer_city = (
SELECT branch_city FROM branch WHERE branch.branch_name = l.branch_name
)
WHERE bc.customer_name NOT IN (
SELECT customer_name FROM depositer
);
/* iii. Find all customers who have BOTH an account and a loan
at the Bangalore branch */
SELECT DISTINCT d.customer_name
FROM depositer d
JOIN bankaccount ba ON d.accno = ba.accno
JOIN loan l ON ba.branch_name = l.branch_name
JOIN branch b ON ba.branch_name = b.branch_name
WHERE b.branch_city = 'Bangalore';
/* iv. Find the names of all branches that have greater assets
than ALL branches located in Bangalore */
SELECT branch_name
FROM branch
WHERE assets > ALL (
SELECT assets
FROM branch
WHERE branch_city = 'Bangalore'
);
/* v. Delete all account tuples at every branch located
in a specific city (Example: Bombay) */
DELETE FROM bankaccount
WHERE branch_name IN (
SELECT branch_name
FROM branch
WHERE branch_city = 'Bombay'
);
/* vi. Update the balance of ALL accounts by 5% */
UPDATE bankaccount
SET balance = balance * 1.05;