LAB PROJECT 1
QUESTION 1:
Create tables EMPLOYEE, DEPT and MON_ERNDED with following schema with
appropriate data types. Primary key, foreign key and self-referential key and other
constraints are to be created as per best design practice.
TEXT FILE OF SQL (STRUCTURED QUERY LANGUAGE) CODE:
CREATE TABLE ARG_DEPT (
dept_no INT PRIMARY KEY,
dept_name VARCHAR(50) NOT NULL
);
DESC ARG_DEPT;
CREATE TABLE ARG_EMPLOYEE (
emp_no INT PRIMARY KEY,
emp_photo BLOB,
e_name VARCHAR(100) NOT NULL,
date_of_joining DATE NOT NULL,
e_address VARCHAR(255),
e_ph_no VARCHAR(15),
dept_no INT,
manager_code INT,
project_id INT,
designation VARCHAR(50),
basic DECIMAL(10, 2),
da DECIMAL(10, 2),
hra DECIMAL(10, 2),
cca DECIMAL(10, 2),
bonus_per DECIMAL(5, 2),
FOREIGN KEY (dept_no) REFERENCES ARG_DEPT(dept_no),
FOREIGN KEY (manager_code) REFERENCES ARG_EMPLOYEE(emp_no)
);
DESC ARG_EMPLOYEE;
CREATE TABLE ARG_MON_EARNED (
year1 INT,
month1 INT,
emp_no INT,
gross_sal DECIMAL(12, 2),
pf_amt DECIMAL(12, 2),
tax_amount DECIMAL(12, 2),
net_sal DECIMAL(12, 2),
PRIMARY KEY (year1, month1, emp_no),
FOREIGN KEY (emp_no) REFERENCES ARG_EMPLOYEE(emp_no)
);
DESC ARG_MON_EARNED;
TABLE DESCRIPTION OF CSV (COMMA SEPERATED VALUES) FILE:
TABLE ARG_DEPT
Result Set 2
Column Null? Type
DEPT_NO NOT NULL NUMBER
DEPT_NAME NOT NULL VARCHAR2(50)
TABLE ARG_EMPLOYEE
Result Set 3
Column Null? Type
EMP_NO NOT NULL NUMBER
EMP_PHOTO - BLOB
E_NAME NOT NULL VARCHAR2(100)
DATE_OF_JOINING NOT NULL DATE
E_ADDRESS - VARCHAR2(255)
E_PH_NO - VARCHAR2(15)
DEPT_NO - NUMBER
MANAGER_CODE - NUMBER
PROJECT_ID - NUMBER
DESIGNATION - VARCHAR2(50)
BASIC - NUMBER(10,2)
DA - NUMBER(10,2)
HRA - NUMBER(10,2)
CCA - NUMBER(10,2)
BONUS_PER - NUMBER(5,2)
TABLE ARG_MON_EARNED
Result Set 4
Column Null? Type
YEAR1 NOT NULL NUMBER
MONTH1 NOT NULL NUMBER
EMP_NO NOT NULL NUMBER
GROSS_SAL - NUMBER(12,2)
PF_AMT - NUMBER(12,2)
TAX_AMOUNT - NUMBER(12,2)
NET_SAL - NUMBER(12,2)
QUESTION 2:
Insert 10 tuples in EMPLOYEE, 5 tuples in DEPT and required no of tuples in
MON_ERNDED table.
(i) EMPLOYEE ( Emp_no, EMP_photo,E_name, Date of Joining, E_address,
E_ph_no, Dept_no, Manager_code ,Project_id , Designation , basic ,DA,
HRA,CCA, bonus_per )
(ii) DEPT ( dept_no, Dept_name)
(iii) MON_ERNDED (YEAR, MONTH, EMP_NO, Gross_Sal, PF_amt, Tax_amount,
Net_sal)
Business Rules:
Employee and DEPT Details as mentioned above schema are to be inserted by
using SQL and derived attributes are to inserted into MON_ERDED table after
calculation as mentioned below:-
Bonus_amt = bonus_per of ( Basic+DA)
Gross_sal = Basic+DA+HRA+CCA+Bonus_amt
PF_amount = 12% of Gross_sal
Tax_amount = 20% of Gross_sal
Total_ded = PF_amount+Tax_amount
Net_sal = Gross_sal-Total_ded.
Year and Month are to be entered by the user.
TEXT FILE OF SQL (STRUCTURED QUERY LANGUAGE) CODE:
INSERT INTO ARG_DEPT VALUES (1, 'HR');
INSERT INTO ARG_DEPT VALUES (2, 'Finance');
INSERT INTO ARG_DEPT VALUES (3, 'IT');
INSERT INTO ARG_DEPT VALUES (4, 'Sales');
INSERT INTO ARG_DEPT VALUES (5, 'Marketing');
SELECT * FROM ARG_DEPT;
INSERT INTO ARG_EMPLOYEE VALUES (1, NULL, 'John Doe', TO_DATE('2020-01-15', 'YYYY-MM-DD'),
'123 Elm St', '555-1234', 1, NULL, 101, 'Manager', 50000, 10000, 8000, 2000, 10);
INSERT INTO ARG_EMPLOYEE VALUES (2, NULL, 'Jane Smith', TO_DATE('2019-03-10', 'YYYY-MM-DD'),
'456 Oak St', '555-5678', 2, 1, 102, 'Analyst', 40000, 8000, 6000, 1500, 8);
INSERT INTO ARG_EMPLOYEE VALUES (3, NULL, 'Sam Brown', TO_DATE('2018-07-20', 'YYYY-MM-
DD'), '789 Pine St', '555-8765', 3, 1, 103, 'Developer', 45000, 9000, 7000, 1800, 9);
INSERT INTO ARG_EMPLOYEE VALUES (4, NULL, 'Chris Black', TO_DATE('2021-02-25', 'YYYY-MM-
DD'), '321 Maple St', '555-4321', 4, 2, 104, 'Salesperson', 30000, 6000, 5000, 1200, 7);
INSERT INTO ARG_EMPLOYEE VALUES (5, NULL, 'Pat Green', TO_DATE('2022-05-30', 'YYYY-MM-DD'),
'654 Birch St', '555-2468', 5, 3, 105, 'Marketer', 35000, 7000, 5500, 1300, 6);
INSERT INTO ARG_EMPLOYEE VALUES (6, NULL, 'Kelly White', TO_DATE('2017-11-15', 'YYYY-MM-
DD'), '987 Cedar St', '555-1357', 1, 1, 106, 'HR Specialist', 32000, 6400, 4800, 1200, 7);
INSERT INTO ARG_EMPLOYEE VALUES (7, NULL, 'Alex Gray', TO_DATE('2019-08-01', 'YYYY-MM-DD'),
'432 Spruce St', '555-9753', 2, 2, 107, 'Accountant', 37000, 7400, 5900, 1300, 8);
INSERT INTO ARG_EMPLOYEE VALUES (8, NULL, 'Casey Blue', TO_DATE('2016-09-22', 'YYYY-MM-
DD'), '567 Fir St', '555-6543', 3, 3, 108, 'Tech Lead', 55000, 11000, 8800, 2200, 10);
INSERT INTO ARG_EMPLOYEE VALUES (9, NULL, 'Taylor Yellow', TO_DATE('2020-12-18', 'YYYY-MM-
DD'), '876 Walnut St', '555-3698', 4, 4, 109, 'Sales Manager', 48000, 9600, 7200, 1800, 9);
INSERT INTO ARG_EMPLOYEE VALUES (10, NULL, 'Jordan Pink', TO_DATE('2018-05-15', 'YYYY-MM-
DD'), '210 Redwood St', '555-8523', 5, 5, 110, 'Marketing Head', 60000, 12000, 9600, 2400, 12);
SELECT * FROM ARG_EMPLOYEE;
SELECT * FROM ARG_MON_EARNED;
UPDATE ARG_MON_EARNED SET
gross_sal = (SELECT basic + da + hra + cca + (bonus_per/100 * (basic + da))
FROM ARG_EMPLOYEE WHERE ARG_EMPLOYEE.emp_no = ARG_MON_EARNED.emp_no),
pf_amt = gross_sal * 0.12,
tax_amount = gross_sal * 0.20,
net_sal = gross_sal - (pf_amt + tax_amount);
CSV FILE OF SQL OUTPUT:
Result Set 5
DEPT_NO DEPT_NAME
1 HR
2 Finance
3 IT
4 Sales
5 Marketing
Result Set 6
BONUS_PER 10 8 9 7 6
CCA 2000 1500 1800 1200 1300
HRA 8000 6000 7000 5000 5500
DA 10000 8000 9000 6000 7000
BASIC 50000 40000 45000 30000 35000
DESIGNATION Manager Analyst Developer Salesperson Marketer
PROJECT_ID 101 102 103 104 105
MANAGER_CODE - 1 1 2 3
DEPT_NO 1 2 3 4 5
E_PH_NO 555-1234 555-5678 555-8765 555-4321 555-2468
E_ADDRESS 123 Elm St 456 Oak St 789 Pine St 321 Maple St 654 Birch St
DATE_OF_JOINING 15-JAN-20 10-MAR-19 20-JUL-18 25-FEB-21 30-MAY-22
E_NAME John Doe Jane Smith Sam Brown Chris Black Pat Green
EMP_PHOTO [unsupported data [unsupported data [unsupported data [unsupported data [unsupported data
type] type] type] type] type]
EMP_NO 1 2 3 4 5
7 8 10 9 12
1200 1300 2200 1800 2400
4800 5900 8800 7200 9600
YEAR1 MONTH1 EMP_NO GROSS_SAL PF_AMT TAX_AMOUNT NET_SAL
6400 7400 11000 9600 12000
0
32000 37000 55000 48000 60000
HR Specialist Accountant Tech Lead Sales Manager Marketing Head
0
106 107 108 109 110
1 2 3 4 5
0
1 2 3 4 5
555-1357 555-9753 555-6543 555-3698 555-8523
0
987 Cedar St 432 Spruce St 567 Fir St 876 Walnut St 210 Redwood St
15-NOV-17 01-AUG-19 22-SEP-16 18-DEC-20 15-MAY-18
1
Kelly White Alex Gray Casey Blue Taylor Yellow Jordan Pink
Result Set 10
Result Set 7
[unsupported data [unsupported data [unsupported data [unsupported data [unsupported data
8
type] type] type] type] type]
2024
6 7 8 9 10
YEAR1 MONTH1 EMP_NO GROSS_SAL PF_AMT TAX_AMOUNT NET_SAL
2024 8 1 76000 9120 15200 51680
QUESTION 3:
Write SQL statements for generation of following reports:
a) List the Dept_name, Gross_sal, Pf_amount, tax_amount and net_sal for all the departments.
SELECT D.dept_name,
M.gross_sal,
M.pf_amt,
M.tax_amount,
M.net_sal
FROM ARG_EMPLOYEE E
JOIN ARG_DEPT D ON E.dept_no = D.dept_no
JOIN ARG_MON_EARNED M ON E.emp_no = M.emp_no;
DEPT_NAME GROSS_SAL PF_AMT TAX_AMOUNT NET_SAL
HR 76000 9120 15200 51680
b) List the Dept_name, Gross_sal, Pf_amount, tax_amount and net_sal for all the departments , if
its total salary is greater than 50000.
SELECT D.dept_name,
M.gross_sal,
M.pf_amt,
M.tax_amount,
M.net_sal
FROM ARG_EMPLOYEE E
JOIN ARG_DEPT D ON E.dept_no = D.dept_no
JOIN ARG_MON_EARNED M ON E.emp_no = M.emp_no
GROUP BY D.dept_name, M.gross_sal, M.pf_amt, M.tax_amount, M.net_sal
HAVING SUM(M.net_sal) > 50000;
DEPT_NAME GROSS_SAL PF_AMT TAX_AMOUNT NET_SAL
HR 76000 9120 15200 51680
c) List the employees in the ascending order of Designation of those joined after 1981.
SELECT e_name, designation, date_of_joining
FROM ARG_EMPLOYEE
WHERE date_of_joining > TO_DATE('1981-12-31', 'YYYY-MM-DD')
ORDER BY designation ASC;
Result Set 14
E_NAME DESIGNATION DATE_OF_JOINING
Alex Gray Accountant 01-AUG-19
Jane Smith Analyst 10-MAR-19
Sam Brown Developer 20-JUL-18
Kelly White HR Specialist 15-NOV-17
John Doe Manager 15-JAN-20
Pat Green Marketer 30-MAY-22
Jordan Pink Marketing Head 15-MAY-18
Taylor Yellow Sales Manager 18-DEC-20
Chris Black Salesperson 25-FEB-21
Casey Blue Tech Lead 22-SEP-16
d) List the employees and their experience (in years and months) and net_sal.
SELECT e_name,
TRUNC(MONTHS_BETWEEN(SYSDATE, date_of_joining) / 12) AS years_experience,
MOD(TRUNC(MONTHS_BETWEEN(SYSDATE, date_of_joining)), 12) AS months_experience,
M.net_sal
FROM ARG_EMPLOYEE E
JOIN ARG_MON_EARNED M ON E.emp_no = M.emp_no;
E_NAME YEARS_EXPERIENCE MONTHS_EXPERIENCE NET_SAL
John Doe 4 6 51680
e) List the employees who are either “CLERK‟ or “ANALYST‟.
SELECT e_name, designation
FROM ARG_EMPLOYEE
WHERE UPPER(designation) IN ('CLERK', 'ANALYST');
Result Set
E_NAME DESIGNATION
Jane Smith Analyst
f) List the employees who joined on 1-MAY-81, 3-DEC-81, 17- DEC-81,19-JAN-80.
SELECT e_name, date_of_joining
FROM ARG_EMPLOYEE
WHERE date_of_joining IN (TO_DATE('01-AUG-19', 'DD-MON-YY'),
TO_DATE('20-JUL-18', 'DD-MON-YY'),
TO_DATE('15-MAY-18', 'DD-MON-YY'),
TO_DATE('15-JAN-20', 'DD-MON-YY')
);
E_NAME DATE_OF_JOINING
John Doe 15-JAN-20
Sam Brown 20-JUL-18
Alex Gray 01-AUG-19
Jordan Pink 15-MAY-18
g) List the employees who are working for the Dept_no 10 or 2.
SELECT e_name, dept_no FROM ARG_EMPLOYEE WHERE dept_no IN (10, 2);
E_NAME DEPT_NO
Jane Smith 2
Alex Gray 2
h) List the E_name for those starting with “S‟.
SELECT e_name FROM ARG_EMPLOYEE WHERE e_name LIKE 'S%';
E_NAME
Sam Brown
QUESTION 4:
Issue a query to convert ‘cse’ into its upper cases using SQL.
SELECT UPPER('cse') AS upper_case_text FROM dual;
UPPER_CASE_TEXT
CSE
QUESTION 5:
Calculate sqrt(81) using SQL.
SELECT SQRT(81) AS sqrt_value FROM dual;
SQRT_VALUE