| -- 1. Create the Tables
|
| CREATE TABLE DESIGNATION (
|
| DESIG_CODE CHAR(16) PRIMARY KEY,
|
| DESIG_DESC CHAR(20)
|
| );
|
|
|
| CREATE TABLE DEPARTMENT (
|
| DEPT_CODE CHAR(16) PRIMARY KEY,
|
| DEPT_NAME CHAR(20)
|
| );
|
|
|
| CREATE TABLE EMPLOYEE (
|
| EMP_CODE CHAR(16) PRIMARY KEY,
|
| EMP_NAME CHAR(20),
|
| DEPT_CODE CHAR(16),
|
| DESIG_CODE CHAR(16),
|
| SEX CHAR(1),
|
| ADDRESS CHAR(25),
|
| CITY CHAR(20),
|
| STATE CHAR(20),
|
| PIN CHAR(6),
|
| BASIC DECIMAL(10,2), -- MySQL uses DECIMAL (or INT) instead of Oracle's NUMBER
|
| JN_DT DATE
|
| );
|
|
|
| -- 2. Display the structure of each table
|
| -- DESCRIBE EMPLOYEE;
|
| -- DESCRIBE DESIGNATION;
|
| -- DESCRIBE DEPARTMENT;
|
|
|
| -- 3. Insert rows into the tables
|
| INSERT INTO DESIGNATION VALUES ('MGR', 'Manager');
|
| INSERT INTO DESIGNATION VALUES ('EXEC', 'Executive');
|
| INSERT INTO DESIGNATION VALUES ('OFF', 'Officer');
|
| INSERT INTO DESIGNATION VALUES ('CLK', 'Clerk');
|
| INSERT INTO DESIGNATION VALUES ('HLP', 'Helper');
|
|
|
| INSERT INTO DEPARTMENT VALUES ('PERS', 'Personnel');
|
| INSERT INTO DEPARTMENT VALUES ('PROD', 'Production');
|
| INSERT INTO DEPARTMENT VALUES ('PURC', 'Purchase');
|
| INSERT INTO DEPARTMENT VALUES ('FIN', 'Finance');
|
| INSERT INTO DEPARTMENT VALUES ('RES', 'Research');
|
|
|
| INSERT INTO EMPLOYEE VALUES ('E001', 'Amit Sharma', 'FIN', 'MGR', 'M', '12 MG Road', 'Mumbai', 'Maharashtra', '400001', 85000, '2005-04-12');
|
| INSERT INTO EMPLOYEE VALUES ('E002', 'Priya Singh', 'PROD', 'EXEC', 'F', '34 Park Street', 'Kolkata', 'West Bengal', '700016', 62000, '2012-01-15');
|
| INSERT INTO EMPLOYEE VALUES ('E003', 'Rahul Verma', 'PURC', 'OFF', 'M', '56 Tech Park', 'Bangalore', 'Karnataka', '560001', 45000, '2018-08-22');
|
| INSERT INTO EMPLOYEE VALUES ('E004', 'Sneha Roy', 'PERS', 'CLK', 'F', '78 Lake View', 'Chennai', 'Tamil Nadu', '600001', 0, '2009-11-05');
|
| INSERT INTO EMPLOYEE VALUES ('E005', 'Vikram Das', 'RES', 'HLP', 'M', '90 Ring Road', 'Delhi', 'Delhi', '110001', 25000, '2015-01-20');
|
|
|
| -- 4. Insert rows without DEPT_CODE and BASIC
|
| INSERT INTO EMPLOYEE (EMP_CODE, EMP_NAME, DESIG_CODE, SEX, ADDRESS, CITY, STATE, PIN, JN_DT)
|
| VALUES ('E006', 'Kiran Patel', 'CLK', 'F', '123 New Ave', 'Ahmedabad', 'Gujarat', '380001', '2019-06-14');
|
|
|
| INSERT INTO EMPLOYEE (EMP_CODE, EMP_NAME, DESIG_CODE, SEX, ADDRESS, CITY, STATE, PIN, JN_DT)
|
| VALUES ('E007', 'Manoj Kumar', 'HLP', 'M', '456 Old Town', 'Jaipur', 'Rajasthan', '302001', '2021-01-10');
|
|
|
| -- 5. Find the rows with unassigned DEPT_CODE
|
| SELECT * FROM EMPLOYEE WHERE DEPT_CODE IS NULL;
|
|
|
| -- 6. Find the rows with BASIC equal to zero
|
| SELECT * FROM EMPLOYEE WHERE BASIC = 0;
|
|
|
| -- 7. Find the rows with unassigned BASIC
|
| SELECT * FROM EMPLOYEE WHERE BASIC IS NULL;
|
|
|
| -- 8. Find the average basic of the employees
|
| SELECT AVG(BASIC) AS AVERAGE_BASIC FROM EMPLOYEE;
|
|
|
| -- 9. Replace the BASIC with 0 for the rows with unassigned Basic
|
| UPDATE EMPLOYEE SET BASIC = 0 WHERE BASIC IS NULL;
|
|
|
| -- 10. Again, find the average Basic
|
| SELECT AVG(BASIC) AS NEW_AVERAGE_BASIC FROM EMPLOYEE;
|
|
|
| -- 11. Delete the rows with unassigned DEPT_CODE
|
| DELETE FROM EMPLOYEE WHERE DEPT_CODE IS NULL;
|
|
|
| -- 12. Show the employee name & Net pay for all employees
|
| SELECT EMP_NAME, (BASIC + (BASIC * 0.5) + (BASIC * 0.4)) AS NET_PAY FROM EMPLOYEE;
|
|
|
| -- 13. Show the EMP_NAME & BASIC in the ascending order of DEPT_CODE
|
| SELECT EMP_NAME, BASIC
|
| FROM EMPLOYEE
|
| ORDER BY DEPT_CODE ASC;
|
|
|
| -- 14. Find the employees who have joined after 1st January 2010
|
| SELECT * FROM EMPLOYEE WHERE JN_DT > '2010-01-01';
|
|
|
| -- 15. Find, how many employees have joined in the month of January
|
| -- Note: MySQL has a dedicated MONTH() function which makes this cleaner
|
| SELECT COUNT(*) AS JAN_JOINERS
|
| FROM EMPLOYEE
|
| WHERE strftime('%m', JN_DT) = '01';
|
|
|
| --16.
|
| SELECT MAX(BASIC) AS MAX_BASIC, MIN(BASIC) AS MIN_BASIC
|
| FROM EMPLOYEE;
|
|
|
| -- 17.
|
| SELECT COUNT(*) AS FEMALE_EMPLOYEE_COUNT
|
| FROM EMPLOYEE
|
| WHERE SEX = 'F';
|
|
|
| -- 18.
|
| UPDATE EMPLOYEE
|
| SET CITY = UPPER(CITY);
|
|
|
| -- 19.
|
| SELECT COUNT(DISTINCT CITY) AS UNIQUE_CITIES_COUNT
|
| FROM EMPLOYEE;
|
|
|
| --20.
|
| SELECT * FROM EMPLOYEE
|
| ORDER BY DEPT_CODE ASC, BASIC DESC;
|