feat: erd for bank database. feat: task_2 finished
This commit is contained in:
parent
9ec37cbaf4
commit
f140865fa4
1
leistungsnachweis/task_1/erd.pgerd
Normal file
1
leistungsnachweis/task_1/erd.pgerd
Normal file
File diff suppressed because one or more lines are too long
151
leistungsnachweis/task_2/queries.sql
Normal file
151
leistungsnachweis/task_2/queries.sql
Normal file
@ -0,0 +1,151 @@
|
||||
-- 1)
|
||||
SELECT
|
||||
emp_id,
|
||||
fname,
|
||||
lname
|
||||
FROM employee
|
||||
ORDER BY
|
||||
lname DESC,
|
||||
fname;
|
||||
|
||||
-- 2)
|
||||
SELECT
|
||||
account_id,
|
||||
cust_id,
|
||||
avail_balance
|
||||
FROM account
|
||||
WHERE
|
||||
status = 'ACTIVE'
|
||||
AND
|
||||
avail_balance > 2500;
|
||||
|
||||
-- 3)
|
||||
SELECT DISTINCT(open_emp_id)
|
||||
FROM account;
|
||||
|
||||
-- 4)
|
||||
SELECT COUNT(account_id)
|
||||
FROM account;
|
||||
|
||||
-- 5)
|
||||
SELECT
|
||||
individual.fname,
|
||||
individual.lname,
|
||||
COUNT(*)
|
||||
FROM individual
|
||||
JOIN account
|
||||
ON individual.cust_id = account.cust_id
|
||||
GROUP BY
|
||||
individual.fname,
|
||||
individual.lname;
|
||||
|
||||
-- 6)
|
||||
SELECT
|
||||
individual.fname,
|
||||
individual.lname,
|
||||
COUNT(*)
|
||||
FROM account
|
||||
JOIN individual
|
||||
ON account.cust_id = individual.cust_id
|
||||
GROUP BY
|
||||
individual.fname,
|
||||
individual.lname
|
||||
HAVING
|
||||
COUNT(*) >= 2;
|
||||
|
||||
-- 7)
|
||||
SELECT *
|
||||
FROM account
|
||||
WHERE EXTRACT(YEAR FROM open_date) = 2002;
|
||||
|
||||
-- 8)
|
||||
SELECT *
|
||||
FROM individual
|
||||
WHERE lname LIKE '_a%e%';
|
||||
|
||||
-- 9)
|
||||
SELECT
|
||||
account.account_id,
|
||||
customer.fed_id,
|
||||
product.name
|
||||
FROM account
|
||||
JOIN individual
|
||||
ON account.account_id = individual.cust_id
|
||||
JOIN customer
|
||||
ON account.account_id = customer.cust_id
|
||||
JOIN product
|
||||
ON account.product_cd = product.product_cd;
|
||||
|
||||
-- 10)
|
||||
SELECT
|
||||
e.emp_id,
|
||||
e.fname,
|
||||
e.lname
|
||||
FROM employee e
|
||||
JOIN employee s
|
||||
ON e.superior_emp_id = s.superior_emp_id
|
||||
JOIN department d1
|
||||
ON e.dept_id = d1.dept_id
|
||||
JOIN department d2
|
||||
ON s.superior_emp_id = d2.dept_id
|
||||
WHERE d1.dept_id <> d2.dept_id;
|
||||
|
||||
-- 11)
|
||||
SELECT
|
||||
i.fname,
|
||||
i.lname
|
||||
FROM individual i
|
||||
UNION
|
||||
SELECT
|
||||
e.fname,
|
||||
e.lname
|
||||
FROM employee e;
|
||||
|
||||
-- 12)
|
||||
SELECT
|
||||
s.fname || ' ' || s.lname AS superior,
|
||||
STRING_AGG(e.fname || ' ' || e.lname, ', ') AS employees
|
||||
FROM employee s
|
||||
JOIN employee e
|
||||
ON e.superior_emp_id = s.emp_id
|
||||
GROUP BY s.fname, s.lname;
|
||||
|
||||
-- 13)
|
||||
SELECT
|
||||
a.account_id,
|
||||
a.cust_id,
|
||||
COALESCE(b.name, i.fname || ' ' || i.lname)
|
||||
FROM account a
|
||||
JOIN customer c
|
||||
ON a.cust_id = c.cust_id
|
||||
LEFT JOIN business b
|
||||
ON c.cust_id = b.cust_id
|
||||
LEFT JOIN individual i
|
||||
ON c.cust_id = i.cust_id;
|
||||
|
||||
-- 14)
|
||||
SELECT
|
||||
COALESCE(b.name, i.fname || ' ' || i.lname) customer_name
|
||||
FROM (
|
||||
SELECT
|
||||
cust_id,
|
||||
SUM(avail_balance) AS balance
|
||||
FROM account
|
||||
GROUP BY cust_id
|
||||
ORDER BY balance DESC
|
||||
LIMIT 1
|
||||
) top_customer
|
||||
JOIN customer c
|
||||
ON top_customer.cust_id = c.cust_id
|
||||
LEFT JOIN business b
|
||||
ON c.cust_id = b.cust_id
|
||||
LEFT JOIN individual i
|
||||
ON c.cust_id = i.cust_id;
|
||||
|
||||
-- 15)
|
||||
SELECT
|
||||
a.account_id,
|
||||
p.name
|
||||
FROM account a
|
||||
FULL JOIN product p
|
||||
ON a.product_cd = p.product_cd
|
||||
Loading…
x
Reference in New Issue
Block a user