Database Management System Lab (CSE304L) Exercise 5: Anu Likitha Immadisetty AP21110010963
Database Management System Lab (CSE304L) Exercise 5: Anu Likitha Immadisetty AP21110010963
Exercise 5
A)
i)
CREATE VIEW DepartmentEmployeeSalary AS
SELECT D.Dname, E.Fname, E.Salary
FROM Department D
JOIN Employee E ON D.Dnumber = E.Dno;
ii)
CREATE VIEW ProjectEmployeeHours AS
SELECT P.Pname, D.Dname, COUNT(W.Essn) AS NumEmployees, SUM(W.Hours) AS TotalHoursPerWeek
FROM Project P
JOIN Department D ON P.Dnum = D.Dnumber
JOIN Works_on W ON P.Pnumber = W.Pno
GROUP BY P.Pname, D.Dname
HAVING COUNT(W.Essn) > 1;
iii)
CREATE VIEW UpdatableDept AS SELECT * FROM DEPARTMENT;
SELECT * FROM UpdatableDept;
B)
-- Create a materialized view for calculating average salaries
CREATE VIEW SalarySummary AS
SELECT
'Employees' AS Category,
AVG(Salary) AS AverageSalary
FROM Employee
UNION ALL
SELECT
'Managers' AS Category,
AVG(Salary) AS AverageSalary
FROM Employee
WHERE Ssn IN (SELECT DISTINCT Mgr_ssn FROM Department)
UNION ALL
SELECT
D.Dname AS Category,
AVG(E.Salary) AS AverageSalary
FROM Department D
JOIN Employee E ON D.Dnumber = E.Dno
GROUP BY D.Dname
UNION ALL
SELECT
'Top Department(s)' AS Category,
D.Dname
FROM (
SELECT
D.Dname,
SUM(E.Salary) AS TotalSalary
FROM Department D
JOIN Employee E ON D.Dnumber = E.Dno
GROUP BY D.Dname
ORDER BY TotalSalary DESC
LIMIT 1
) AS D;
C)
START TRANSACTION;
INSERT INTO DEPARTMENT (Dnumber, Dname, Mgr_ssn, Mgr_start_date)
VALUES (5, 'Konda Department', '123456799', '2022-01-16');
INSERT INTO EMPLOYEE (Fname, Lname, Ssn, Bdate, Address, Sex, Salary, Super_ssn, Dno)
VALUES ('Boar', 'Head', '122456799', '1990-01-01', '123 Main St', 'M', 60000.00, '123456799', 5);
COMMIT;