0% found this document useful (0 votes)
13 views14 pages

Assig 9

Uploaded by

Soumita Sahu
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)
13 views14 pages

Assig 9

Uploaded by

Soumita Sahu
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/ 14

NAME- SHOUVIK PARUI

ROLL – 13000121024
6TH SEMESTER
ASSIGNMENT 9
Question:
Consider the following relations and Draw the ER, EER Diagram, Relational Model and write the SQL
statement for the following queries:
Create the tables and insert 5 sets of records into each.
 employee (personname, street, city)
 works (personname, companyname, salary)
 company (companyname, city)
 manages (personname, managername)

ER DIAGRAM

RELATIONAL MODEL
CREATE TABLE EMPLOYEE(EMP_ID VARCHAR2(5) PRIMARY KEY,PERSONNAME
VARCHAR2(20),STREET VARCHAR2(20),CITY VARCHAR2(20));

CREATE TABLE COMPANY(COMP_ID VARCHAR2(5) PRIMARY


KEY,COMPANYNAME VARCHAR2(20),CITY VARCHAR2(20));

CREATE TABLE WORKS(EMP_ID VARCHAR2(5) REFERENCES


EMPLOYEE(EMP_ID),COMP_ID VARCHAR2(5) REFERENCES
COMPANY(COMP_ID),SALARY NUMBER(10,2));
CREATE TABLE MANAGES(EMP_ID VARCHAR2(5) REFERENCES
EMPLOYEE(EMP_ID),MANAGER_ID VARCHAR2(5) REFERENCES
EMPLOYEE(EMP_ID));
INSERT INTO EMPLOYEE VALUES('E001','ABC','BAKER STREET','MUMBAI');
INSERT INTO EMPLOYEE VALUES('E002','DEF','PARK STREET','KOLKATA');
INSERT INTO EMPLOYEE VALUES('E003','GHI','BT ROAD','KOLKATA'); INSERT
INTO EMPLOYEE VALUES('E004','JKL','WALTER STREET','PUNE'); INSERT INTO
EMPLOYEE VALUES('E005','MNO','NORTON STREET','MUMBAI');
INSERT INTO COMPANY VALUES('C001','AXIS BANK', 'MUMBAI');
INSERT INTO COMPANY VALUES('C002','AXIS BANK', 'KOLKATA');
INSERT INTO COMPANY VALUES('C003','ACC CEMENT','KOLKATA');
INSERT INTO COMPANY VALUES('C004','INFOTECH', 'MUMBAI');
INSERT INTO COMPANY VALUES('C005','INFOTECH', 'PUNE');
INSERT INTO COMPANY VALUES('C006','SYNOTECH', 'MUMBAI');
INSERT INTO MANAGES VALUES('E001','E003');
INSERT INTO MANAGES VALUES('E002','E003');
INSERT INTO MANAGES VALUES('E005','E004');
INSERT INTO WORKS VALUES('E001',
'C001',20000); INSERT INTO WORKS
VALUES('E002', 'C001',30000); INSERT INTO
WORKS VALUES('E003', 'C001',40000); INSERT
INTO WORKS VALUES('E004', 'C004',60000);
INSERT INTO WORKS VALUES('E005', 'C004',50000);
a) Find the names of all employees who work for Axis Bank.
SELECT EMPLOYEE.PERSONNAME FROM EMPLOYEE,COMPANY,WORKS WHERE
EMPLOYEE. EMP_ID = WORKS.EMP_ID AND COMPANY.COMP_ID =
WORKS.COMP_ID AND COMPANY.COMPANYNAME='AXIS BANK';

b) Find the names and cities of residence of all employees who work for Axis Bank.
SELECT EMPLOYEE.PERSONNAME, EMPLOYEE.CITY FROM EMPLOYEE,
COMPANY, WORKS WHERE EMPLOYEE.EMP_ID = WORKS.EMP_ID AND
COMPANY.COMP_ID = WORKS.COMP_ID AND COMPANY.COMPANYNAME='AXIS
BANK';

c) Find the names, street addresses, and cities of residence of all employees who work for
Axis Bank and earn more than Rs.30000 per annum.
SELECT EMPLOYEE.PERSONNAME, EMPLOYEE.STREET, EMPLOYEE.CITY FROM
EMPLOYEE, COMPANY, WORKS WHERE EMPLOYEE.EMP_ID = WORKS.EMP_ID
AND COMPANY.COMP_ID = WORKS.COMP_ID AND
COMPANY.COMPANYNAME='AXIS BANK' AND WORKS.SALARY>30000;

d) Find all employees who live in the same city as the company for which they work is
located.
SELECT EMPLOYEE.PERSONNAME FROM EMPLOYEE, COMPANY, WORKS WHERE
EMPLOYEE.EMP_ID = WORKS.EMP_ID AND COMPANY.COMP_ID =
WORKS.COMP_ID AND EMPLOYEE.CITY = COMPANY.CITY;
e) Find all employees who live in the same city and on the same street as their managers.
SELECT EMPLOYEE.PERSONNAME FROM EMPLOYEE,MANAGES WHERE
EMPLOYEE.EMP_ID = MANAGES.EMP_ID AND EMPLOYEE.STREET IN (SELECT
EMPLOYEE.STREET FROM EMPLOYEE, MANAGES WHERE EMPLOYEE.EMP_ID =
MANAGES.EMP_ID) AND EMPLOYEE.CITY IN (SELECT EMPLOYEE.CITY FROM
EMPLOYEE, MANAGES WHERE EMPLOYEE.EMP_ID = MANAGES.MANAGER_ID);

f) Find all employees in the database who do not work for Axis Bank.

SELECT EMPLOYEE.PERSONNAME FROM EMPLOYEE,WORKS,COMPANY WHERE


EMPLOYEE.EMP_ID = WORKS.EMP_ID AND COMPANY.COMP_ID =
WORKS.COMP_ID AND COMPANY.COMPANYNAME != 'AXIS BANK';

g) Find all employees who earn more than every employee of Axis Bank.
SELECT EMPLOYEE.PERSONNAME FROM EMPLOYEE,WORKS,COMPANY WHERE
EMPLOYEE.EMP_ID = WORKS.EMP_ID AND COMPANY.COMP_ID =
WORKS.COMP_ID AND COMPANY.COMPANYNAME != 'AXIS BANK' AND
WORKS.SALARY>(SELECT MAX(WORKS.SALARY) FROM
EMPLOYEE,WORKS,COMPANY WHERE EMPLOYEE.EMP_ID = WORKS.EMP_ID AND
COMPANY.COMP_ID = WORKS.COMP_ID AND COMPANY.COMPANYNAME = 'AXIS
BANK');

h) Assume that the companies may be located in several cities. Find all companies
located in every city in which Axis Bank is located.
SELECT COMPANY.COMPANYNAME FROM COMPANY WHERE
COMPANY.COMPANYNAME != 'AXIS BANK' AND COMPANY.CITY IN (SELECT
COMPANY.CITY FROM COMPANY WHERE COMPANYNAME = 'AXIS BANK');
i) Find all employees who earn more than the average salary of all employees of their
company.

SELECT EMPLOYEE.PERSONNAME FROM EMPLOYEE,WORKS,COMPANY WHERE


EMPLOYEE.EMP_ID = WORKS.EMP_ID AND COMPANY.COMP_ID =
WORKS.COMP_ID AND WORKS.SALARY>(SELECT AVG(SALARY) FROM
WORKS,COMPANY WHERE COMPANY.COMP_ID = WORKS.COMP_ID);

j) Find the company that has the most employees.


SELECT COMPANY.COMPANYNAME FROM EMPLOYEE,WORKS,COMPANY WHERE
EMPLOYEE.EMP_ID = WORKS.EMP_ID AND COMPANY.COMP_ID =
WORKS.COMP_ID GROUP BY COMPANY.COMPANYNAME HAVING
COUNT(EMPLOYEE.EMP_ID)>=ALL(SELECT COUNT(EMPLOYEE.EMP_ID) FROM
EMPLOYEE,WORKS,COMPANY WHERE EMPLOYEE.EMP_ID = WORKS.EMP_ID AND
COMPANY.COMP_ID = WORKS.COMP_ID GROUP BY COMPANYNAME);

k) Find the company that has the smallest payroll.


SELECT COMPANY.COMPANYNAME FROM WORKS,COMPANY WHERE
COMPANY.COMP_ID = WORKS.COMP_ID GROUP BY COMPANY.COMPANYNAME
HAVING SUM(WORKS.SALARY)<=ALL(SELECT SUM(WORKS.SALARY) FROM
WORKS,COMPANY WHERE COMPANY.COMP_ID = WORKS.COMP_ID GROUP BY
COMPANY.COMPANYNAME);
l) Find those companies whose employees earn a higher salary, on average, than
the average salary at Axis Bank.
SELECT COMPANY.COMPANYNAME FROM WORKS,COMPANY WHERE
COMPANY.COMP_ID = WORKS.COMP_ID GROUP BY COMPANY.COMPANYNAME
HAVING AVG(WORKS.SALARY)>(SELECT AVG(WORKS.SALARY) FROM
WORKS,COMPANY WHERE COMPANY.COMP_ID = WORKS.COMP_ID AND
COMPANY.COMPANYNAME='AXIS BANK');

m) Modify the database so that ABC now lives in Kolkata.


UPDATE EMPLOYEE SET EMPLOYEE.CITY = 'KOLKATA' WHERE
EMPLOYEE.PERSONNAME = 'ABC';
n) Give all employees of Axis Bank a 10 percent raise.
UPDATE WORKS SET WORKS.SALARY = WORKS.SALARY+
(WORKS.SALARY*10/100) WHERE WORKS.COMP_ID IN (SELECT COMP_ID FROM
COMPANY WHERE COMPANYNAME = 'AXIS BANK');
SELECT EMPLOYEE.PERSONNAME,WORKS.SALARY FROM
EMPLOYEE,WORKS,COMPANY WHERE EMPLOYEE.EMP_ID=WORKS.EMP_ID AND
WORKS.COMP_ID=COMPANY.COMP_ID AND COMPANY.COMPANYNAME='AXIS
BANK';
o) Give all managers in the database a 10 percent raise.
UPDATE WORKS SET WORKS.SALARY = WORKS.SALARY+
(WORKS.SALARY*10/100) WHERE WORKS.EMP_ID IN (SELECT MANAGES.EMP_ID
FROM MANAGES);
SELECT MANAGES.MANAGER_ID,WORKS.SALARY FROM
EMPLOYEE,WORKS,MANAGES,COMPANY WHERE EMPLOYEE.EMP_ID =
MANAGES.EMP_ID AND EMPLOYEE.EMP_ID = WORKS.EMP_ID AND
COMPANY.COMP_ID = WORKS.COMP_ID;

p) Give all managers in the database a 10 percent raise, unless the salary would be greater
than Rs.300000. In such cases, give only a 3 percent raise.
UPDATE WORKS SET WORKS.SALARY = WORKS.SALARY+
(WORKS.SALARY*10/100) WHERE WORKS.SALARY<30000 AND WORKS.EMP_ID IN
(SELECT MANAGES.EMP_ID FROM MANAGES);

UPDATE WORKS SET WORKS.SALARY = WORKS.SALARY+(WORKS.SALARY*3/100)


WHERE WORKS.SALARY>=30000 AND WORKS.EMP_ID IN (SELECT
MANAGES.EMP_ID FROM MANAGES);
q) Delete all tuples in the works relation for employees of Axis Bank.
DELETE FROM WORKS WHERE COMP_ID IN (SELECT COMP_ID FROM COMPANY
WHERE COMPANYNAME='AXIS BANK');

You might also like