0% found this document useful (0 votes)
5 views3 pages

Assignment 8

Uploaded by

pr.im12me
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views3 pages

Assignment 8

Uploaded by

pr.im12me
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 3

Table Creation:

CREATE DATABASE mydb8;


USE mydb8;

CREATE TABLE Emp (


eid INTEGER,
ename VARCHAR(50),
age INTEGER,
salary REAL,
PRIMARY KEY (eid)
);

CREATE TABLE Works (


eid INTEGER,
did INTEGER,
pct_time INTEGER,
PRIMARY KEY (eid, did)
);

CREATE TABLE Dept (


did INTEGER,
budget REAL,
managerid INTEGER,
PRIMARY KEY (did)
);

INSERT INTO Emp (eid, ename, age, salary) VALUES


(1, 'Alice', 30, 80000),
(2, 'Bob', 45, 120000),
(3, 'Charlie', 28, 60000),
(4, 'Diana', 35, 90000),
(5, 'Eve', 50, 110000);

INSERT INTO Dept (did, budget, managerid) VALUES


(101, 500000, 5),
(102, 1500000, 2),
(103, 750000, 3),
(104, 2500000, 1),
(105, 2000000, 4);

INSERT INTO Works (eid, did, pct_time) VALUES


(1, 101, 50),
(1, 102, 50),
(2, 102, 100),
(3, 103, 100),
(4, 104, 100),
(5, 101, 25),
(5, 105, 75);

1.
Code:
SELECT e.ename, e.age
FROM Emp e
JOIN Works w1 ON e.eid = w1.eid
JOIN Works w2 ON e.eid = w2.eid
JOIN Dept d1 ON w1.did = d1.did
JOIN Dept d2 ON w2.did = d2.did
WHERE d1.did = 101 AND d2.did = 102;

Output:

2.
Code:
SELECT w.did, COUNT(w.eid) AS num_employees
FROM Works w
GROUP BY w.did
HAVING SUM(w.pct_time) >= 2000;
Output:

3.
Code:
SELECT e.ename
FROM Emp e
JOIN Works w ON e.eid = w.eid
JOIN Dept d ON w.did = d.did
GROUP BY e.eid, e.ename, e.salary
HAVING e.salary > MAX(d.budget);
Output:

4
Code:
SELECT DISTINCT d.managerid
FROM Dept d
GROUP BY d.managerid
HAVING MIN(d.budget) > 1000000;
Output:

5.
Code:
WITH MaxBudgetDept AS (
SELECT MAX(budget) AS max_budget
FROM Dept
)
SELECT e.ename
FROM Emp e
JOIN Dept d ON e.eid = d.managerid
JOIN MaxBudgetDept m ON d.budget = m.max_budget;
Output:

6.
Code:
SELECT d.managerid
FROM Dept d
GROUP BY d.managerid
HAVING SUM(d.budget) > 5000000;
Output:

You might also like