0% found this document useful (0 votes)
19 views11 pages

Assignment12 2

The document outlines the SQL schema and commands for creating tables related to employees, departments, project management, and work assignments. It includes SQL queries for retrieving project numbers involving employees with the last name 'Scott', updating salaries for employees on a specific project, and calculating salary statistics for a department. Additionally, it provides PL/SQL procedures for calculating the GCD of two numbers and displaying employee names and salaries below a specified limit.

Uploaded by

abhirup7477
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)
19 views11 pages

Assignment12 2

The document outlines the SQL schema and commands for creating tables related to employees, departments, project management, and work assignments. It includes SQL queries for retrieving project numbers involving employees with the last name 'Scott', updating salaries for employees on a specific project, and calculating salary statistics for a department. Additionally, it provides PL/SQL procedures for calculating the GCD of two numbers and displaying employee names and salaries below a specified limit.

Uploaded by

abhirup7477
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/ 11

ASSIGNMENT – 12.

EMPLOYEE (SSN, Name, Address, Sex, Salary, SuperSSN, DNo)


DEPARTMENT (DNo, DName, MgrSSN, MgrStartDate)
DLOCATION (DNo,DLoc)
PROJECT (PNo, PName, PLocation, DNo)
WORKS_ON (SSN, PNo, Hours)

CREATE TABLE EMPLOYEE (SSN VARCHAR2(10) PRIMARY KEY, NAME


VARCHAR2(50), ADDRESS VARCHAR2(100), SEX CHAR(1), SALARY DECIMAL(10,
2), SUPERSSN VARCHAR2(10), DNO NUMBER, CONSTRAINT EMPLFK2 FOREIGN
KEY (DNO) REFERENCES DEPARTMENT(DNO) ON DELETE CASCADE);

CREATE TABLE DEPARTMENT (DNO NUMBER PRIMARY KEY, DNAME


VARCHAR2(50), MGRSSN VARCHAR2(10), MGRSTARTDATE DATE);
CREATE TABLE DLOCATION (DNO NUMBER, DLOC VARCHAR2(100),
CONSTRAINT DLPK1 PRIMARY KEY (DNO, DLOC), CONSTRAINT DLFK1
FOREIGN KEY (DNO) REFERENCES DEPARTMENT(DNO) ON DELETE CASCADE);

CREATE TABLE PROJECT ( PNO NUMBER PRIMARY KEY, PNAME


VARCHAR2(100), PLOCATION VARCHAR2(100), DNO NUMBER, CONSTRAINT
PRJFK1 FOREIGN KEY (DNO) REFERENCES DEPARTMENT(DNO) ON DELETE
CASCADE);

CREATE TABLE WORKS_ON (SSN VARCHAR2(10), PNO NUMBER, HOURS


DECIMAL(5, 2), CONSTRAINT WOFK1 FOREIGN KEY (SSN) REFERENCES
EMPLOYEE(SSN) ON DELETE CASCADE, CONSTRAINT WOFK2 FOREIGN KEY
(PNO) REFERENCES PROJECT(PNO) ON DELETE CASCADE);
INSERT ALL
INTO EMPLOYEE VALUES ('1111111111', 'John Doe', '123 Main St', 'M', 50000,
NULL, 1)
INTO EMPLOYEE VALUES ('2222222222', 'Alice Smith', '456 Elm St', 'F', 60000,
'1111111111', 2)
INTO EMPLOYEE VALUES ('3333333333', 'Bob Johnson', '789 Oak St', 'M', 55000,
NULL, 1)
INTO EMPLOYEE VALUES ('4444444444', 'Jane Doe', '101 Pine St', 'F', 65000,
'1111111111', 2)
INTO EMPLOYEE VALUES ('5555555555', 'Chris Brown', '202 Maple St', 'M', 70000,
NULL, 3)
SELECT * FROM DUAL;

INSERT ALL
INTO DEPARTMENT VALUES (1, 'IT', '1111111111', TO_DATE('2022-01-01', 'YYYY-
MM-DD'))
INTO DEPARTMENT VALUES (2, 'HR', '2222222222', TO_DATE('2022-01-01',
'YYYY-MM-DD'))
INTO DEPARTMENT VALUES (3, 'Finance', '5555555555', TO_DATE('2022-01-01',
'YYYY-MM-DD'))
SELECT * FROM DUAL;
INSERT ALL
INTO DLOCATION VALUES (1, 'New York')
INTO DLOCATION VALUES (2, 'Los Angeles')
INTO DLOCATION VALUES (3, 'Chicago')
SELECT * FROM DUAL;

INSERT ALL
INTO PROJECT VALUES (101, 'Project X', 'New York', 1)
INTO PROJECT VALUES (102, 'Project Y', 'Los Angeles', 2)
INTO PROJECT VALUES (103, 'Project Z', 'Chicago', 3)
INTO PROJECT VALUES (104, 'Project A', 'New York', 1)
INTO PROJECT VALUES (105, 'Project B', 'Chicago', 3)
SELECT * FROM DUAL;
INSERT ALL
INTO WORKS_ON VALUES ('1111111111', 101, 40)
INTO WORKS_ON VALUES ('2222222222', 102, 35)
INTO WORKS_ON VALUES ('3333333333', 103, 30)
INTO WORKS_ON VALUES ('4444444444', 101, 45)
INTO WORKS_ON VALUES ('5555555555', 104, 50)
SELECT * FROM DUAL;
Write SQL queries to ............
1.Make a list of all project numbers for projects that involve an employee whose last name is
‘Scott’, either as a worker or as a manager of the department that controls the project.

SELECT DISTINCT P.PNO


FROM PROJECT P
JOIN WORKS_ON W ON P.PNO = W.PNO
JOIN EMPLOYEE E ON W.SSN = E.SSN
WHERE E.NAME LIKE '%Scott%'
UNION
SELECT DISTINCT P.PNO
FROM PROJECT P
JOIN DEPARTMENT D ON P.DNO = D.DNO
JOIN EMPLOYEE M ON D.MGRSSN = M.SSN
WHERE M.NAME LIKE '%Scott%';

2.Show the resulting salaries if every employee working on the ‘IoT’ project is given a 10
percent raise.

UPDATE PROJECT SET PNAME = 'IoT' WHERE PNO = 104;

UPDATE EMPLOYEE
SET SALARY = SALARY * 1.10
WHERE SSN IN (
SELECT W.SSN
FROM WORKS_ON W
JOIN PROJECT P ON W.PNO = P.PNO
WHERE P.PNAME = 'IoT'
);

3.Find the sum of the salaries of all employees of the ‘Accounts’ department, as well as the
maximum salary, the minimum salary, and the average salary in this department

UPDATE DEPARTMENT SET DNAME = 'Accounts' WHERE DNO = 3;

SELECT SUM(SALARY) AS Total_Salary,


MAX(SALARY) AS Max_Salary,
MIN(SALARY) AS Min_Salary,
AVG(SALARY) AS Avg_Salary
FROM EMPLOYEE
WHERE DNO = (
SELECT DNO
FROM DEPARTMENT
WHERE DNAME = 'Accounts'
);
4.Retrieve the name of each employee who works on all the projects controlled by
department number

SELECT DISTINCT E.NAME


FROM EMPLOYEE E
WHERE NOT EXISTS (
SELECT P.PNO
FROM PROJECT P
WHERE NOT EXISTS (
SELECT *
FROM WORKS_ON W
WHERE W.PNO = P.PNO AND W.SSN = E.SSN
)
AND P.DNO = E.DNO
);
5 (use NOT EXISTS operator).
5.For each department that has more than five employees, retrieve the department number
and the number of its employees who are making more than Rs. 6,00,000.

SELECT DNO, COUNT(*) AS Num_Employees_Above_6_Lacs


FROM EMPLOYEE
GROUP BY DNO
HAVING COUNT(*) > 5 AND SUM(CASE WHEN SALARY > 600000 THEN 1 ELSE 0
END) > 0;

B. Write a program in PL/SQL to create a procedure to displays the GCD of nos.

CREATE OR REPLACE PROCEDURE Calculate_GCD(x IN NUMBER, y IN NUMBER)


AS
num1 NUMBER := x;
num2 NUMBER := y;
gcd NUMBER;
BEGIN
WHILE num2 != 0 LOOP
gcd := num1;
num1 := num2;
num2 := MOD(gcd, num2);
END LOOP;
DBMS_OUTPUT.PUT_LINE('GCD of ' || x || ' and ' || y || ' is ' || num1);
END;
/

C.Write a program in PL/SQL to create a cursor displays the name and salary of each
employee in the EMPLOYEES table whose salary is less than that specified by a passed-in
parameter value.

CREATE OR REPLACE PROCEDURE DISSAL(salary_limit IN NUMBER) AS


CURSOR Employee_Cur IS
SELECT NAME, SALARY
FROM EMPLOYEE
WHERE SALARY < salary_limit;
emp_name EMPLOYEE.NAME%TYPE;
emp_salary EMPLOYEE.SALARY%TYPE;
BEGIN
OPEN Employee_Cur;
LOOP
FETCH Employee_Cur INTO emp_name, emp_salary;
EXIT WHEN Employee_Cur%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('Name: ' || emp_name || ', Salary: ' || emp_salary);
END LOOP;
CLOSE Employee_Cur;
END;
/

You might also like