dbms lab exercises final
TRANSCRIPT
WEEK - 1
// 1.CREATION OF TABLE NAMED EMP
Query :
SQL> CREATE TABLE EMP (Emp_No NUMBER(2) PRIMARY KEy, 2 Ename VARCHAR(20), 3 Jcode NUMBER(3) REFERENCES Job(Jcode), 4 Mgr_no NUMBER(2), 5 Hiredate DATE, 6 Salary NUMBER(7), 7 Commission NUMBER(5), 8 Dept_no NUMBER(2) REFERENCES Dept(dept_no);
OUTPUT :
Table created.
//DESCRIBE EMP TABLE
Query : DESC EMP;
OUTPUT :
Name Null? Type----------------------------------------- -------- ----------------------------EMP_NO NOT NULL NUMBER(2)ENAME VARCHAR2(20)JCODE NUMBER(3)MGR_NO NUMBER(2)HIREDATE DATESALARY NUMBER(7)COMMISSION NUMBER(5)DEPT_NO NUMBER(2)
// INSERTING DATA INTO THE TABLE EMP
Query : SQL> INSERT INTO Emp VALUES (&Emp_No,'&Ename',&Jcode,&Mgr_no,'&Hiredate',&Salary,&Commission,&Dept_no);
OUTPUT :
Enter value for emp_no: 1Enter value for ename: VenkatEnter value for jcode: 672Enter value for mgr_no: nullEnter value for hiredate: 01-feb-2006Enter value for salary: 1200000Enter value for commission: 10000
Enter value for dept_no: 40old 1: INSERT INTO Emp VALUES (&Emp_No,'&Ename',&Jcode,&Mgr_no,'&Hiredate',&Salary,&Commission,&Dep)new 1: INSERT INTO Emp VALUES(1,'Venkat',672,null,'01-feb-2006',1200000,10000,40)
1 row created.
SQL> /Enter value for emp_no: 2Enter value for ename: NirmalaEnter value for jcode: 671Enter value for mgr_no: 1Enter value for hiredate: 02-Apr-2007Enter value for salary: 800000Enter value for commission: 50000Enter value for dept_no: 20
OUTPUT :
old 1: INSERT INTO Emp VALUES (&Emp_No,'&Ename',&Jcode,&Mgr_no,'&Hiredate',&Salary,&Commission,&Dep)new 1: INSERT INTO Emp VALUES(2,'Nirmala',671,1,'02-Apr-2007',800000,50000,20)
1 row created.
SQL> INSERT INTO Emp (&Emp_No,'&Ename',&Jcode,&Mgr_no,'&Hiredate',&Salary,&Commission,&Dep)VALUES (3,'Pradeep',669,1,'10-OCT-2005',1000000,NULL,40);
OUTPUT :
1 row created.
SQL> INSERT INTO Emp VALUES(4,'Srinivas',669,1,'08-MAY-2005',1000000,NULL,30);
OUTPUT :
1 row created.
// 2.CREATION OF TABLE NAMED DEPT
Query :
SQL> CREATE TABLE Dept(Deptno NUMBER(2) PRIMARY KEY, 2 Dname VARCHAR(15), 3 Lcode NUMBER(3) REFERENCES LOC(LCODE));
OUTPUT :
Table created.
//DESCRIBE DEPT TABLE
Query : DESC DEPT;
OUTPUT :
Name Null? Type ----------------------------------------- -------- ---------------------------- DEPTNO NotNull NUMBER(2) DNAME VARCHAR2(15) LCODE NUMBER(3)
// INSERTING DATA INTO THE TABLE DEPT
Query : SQL> INSERT INTO Dept VALUES(&Deptno,'& Dname',&Lcode);Enter value for deptno: 10Enter value for dname: AccountingEnter value for lcode: 122
OUTPUT :
old 1: INSERT INTO Dept VALUES(&Deptno,'& Dname',&Lcode)new 1: INSERT INTO Dept VALUES(10,'Accounting',122)
1 row created.
SQL> INSERT INTO Dept (&Deptno,'& Dname',&Lcode) VALUES(20,'Research',124);
OUTPUT :
1 row created.
SQL> INSERT INTO Dept VALUES(30,'Sales',123);
OUTPUT :
1 row created.
// 3.CREATION OF TABLE NAMED JOB
Query :
SQL> CREATE TABLE Job(Jcode NUMBER(3) PRIMARY KEY, Jname VARCHAR(15));
OUTPUT :
Table created.
//DESCRIBE JOB TABLE
Query : DESC JOB;
OUTPUT :
Name Null? Type----------------------------------------- -------- ----------------------------JCODE NOT NULL NUMBER(3)JNAME VARCHAR2(15)
// INSERTING DATA INTO THE TABLE JOB
Query :
SQL> INSERT INTO Job VALUES(&Jcode,'&Jname');Enter value for jcode: 667Enter value for jname: Clerk
OUTPUT :
old 1: INSERT INTO Job VALUES(&Jcode,'&Jname')new 1: INSERT INTO Job VALUES(667,'Clerk')
1 row created.
SQL> INSERT INTO Job (&Jcode,'&Jname') VALUES(668,'Staff');
OUTPUT :
1 row created.
SQL> INSERT INTO Job VALUES(669,'Analyst')
OUTPUT : 1 row created.
// 4.CREATION OF TABLE NAMED LOC
Query : SQL> CREATE TABLE Loc(Lcode NUMBER(3) PRIMARY KEY, Lname VARCHAR(15));
OUTPUT :
Table created.
//DESCRIBE LOC TABLE
Query : DESC LOC;
OUTPUT :
Name Null? Type ----------------------------------------- -------- ---------------------------- LCODE NOT NULL NUMBER(3) LNAME VARCHAR2(15)
// INSERTING DATA INTO THE TABLE LOC
Query : SQL> INSERT INTO Loc VALUES(&Lcode,'&Lname');Enter value for lcode: 122Enter value for lname: Kakinada
OUTPUT :
old 1: INSERT INTO Loc VALUES(&Lcode,'&Lname')new 1: INSERT INTO Loc VALUES(122,'Kakinada')
1 row created.
SQL> INSERT INTO Loc (&Lcode,'&Lname') VALUES(124,'Hyderabad');
OUTPUT :
1 row created.
SQL> INSERT INTO Loc VALUES(123,'Bangalore');
OUTPUT :
1 row created.
//DISPLAY EMP TABLE
Query :
SQL> SELECT * FROM EMP;
OUTPUT :
EMP_NO ENAME JCODE MGR_NO HIREDATE SALARY COMMISSION DEPT_NO ---------- ----------- --------- ------------ ------------- ----------- -------------------- ------------- 1 Venkat 672 01-FEB-06 1200000 10000 40 2 Nirmala 671 1 02-APR-07 800000 50000 20 3 Pradeep 669 1 10-OCT-05 1000000 40 4 Srinivas 669 1 08-MAY-05 100000 30 5 Krishna 668 2 09-OCT-05 500000 20000 12 6 Deepa 668 3 09-SEP-07 600000 23 7 Keerthi 668 4 05-JUN-06 600000 24
7 rows selected.
//DISPLAY DEPT TABLEQuery :
SQL> SELECT * FROM DEPT;
OUTPUT:
DEPTNO DNAME LCODE---------- --------------- ---------- 10 Accounting 122 20 Research 124 30 Sales 123 40 Operations 167 12 Research 122 13 Sales 122 14 Operations 122
//DISPLAY JOB TABLE
Query :
SQL> SELECT * FROM JOB;
OUTPUT:
JCODE JNAME ---------- --------------- 667 Clerk 668 Staff 669 Analyst 670 Salesperson 671 Manager 672 President
//DISPLAY LOC TABLE
Query :
SQL> SELECT * FROM LOC;
OUTPUT:
LCODE LNAME---------- --------------- 122 Kakinada 124 Hyderabad 123 Bangalore 167 Vijayawada
WEEK-2
1. Name all the Department Numbers
Query :
SQL> SELECT DEPT_NO FROM EMP;
OUTPUT :
DEPT_NO---------- 40 20 40 30 12 23 24
7 rows selected.
2. Name all Dept Numbers without duplicates
Query :
SQL> SELECT DISTINCT DEPT_NO FROM EMP;
OUTPUT :
DEPT_NO---------- 30 20 24 23 40 12
6 rows selected.
3. Name all Employees Where Department No 20
Query :
SQL> SELECT Ename FROM Emp WHERE Dept_No=20;
OUTPUT :
ENAME--------------------Nirmala
4) Names of all employees who get more than 200000 Salary
Query :
SQL> SELECT Ename FROM Emp WHERE salary>200000;
OUTPUT :
ENAME--------------------VenkatNirmalaPradeepSrinivasKrishnaDeepaKeerthi
7 rows selected.
5) Name all employees who don’t get commission
Query :
SQL> SELECT Ename FROM Emp WHERE commission IS NULL;
OUTPUT :
ENAME--------------------PradeepSrinivasDeepaKeerthi
6) List the Names and salaries of the employees who Salary is greater than four times of their commission
Query :
SQL> SELECT Ename, Salary FROM Emp WHERE Salary> (4*Commission);
OUTPUT :
ENAME SALARY-------------------- ----------Venkat 1200000Nirmala 800000Krishna 500000
7) Names of employees who do not have manager
Query :
SQL> SELECT Ename FROM Emp WHERE Mgr_No IS NULL;
OUTPUT :
NAME--------------------Venkat
8) Names of employees and Salary who have more than or equal to 400000 but less than 800000
Query :
SQL> SELECT Ename, Salary FROM Emp WHERE Salary>=400000 AND Salary<800000;
OUTPUT :
ENAME SALARY-------------------- ----------Krishna 500000Deepa 600000Keerthi 600000
9) Name all employees who have a Salary of either less than 400000 or more than 800000
Query :
SQL> SELECT Ename, Salary FROM Emp WHERE Salary<400000 OR Salary>800000;
OUTPUT :
ENAME SALARY-------------------- ----------Venkat 1200000Pradeep 1000000Srinivas 1000000
10) Name all the employees who are earning more than 400000 but not in Deptid 30
Query :
SQL> SELECT Ename FROM Emp WHERE Salary>400000 AND Dept_No<>30;
OUTPUT :
ENAME--------------------VenkatNirmalaPradeepKrishnaDeepaKeerthi
6 rows selected.
WEEK – 3
11) Names all the Employees who are working under Pradeep
Query :
SQL> SELECT Ename FROM Emp WHERE Mgr_No IN (SELECT Emp_No FROM Emp WHERE Ename ='Pradeep');
OUTPUT :
ENAME--------------------Deepa
12) Names of all Employees who are working under Pradeep or Srinivas
Query :
SQL> SELECT Ename FROM Emp WHERE Mgr_No IN (SELECT Emp_No FROM Emp WHERE Ename='Pradeep' OR Ename='Srinivas')
OUTPUT :
ENAME--------------------DeepaKeerthi
13) Names of all Employees who are working under Pradeep and joined before him
Query :
SQL> SELECT Ename FROM Emp WHERE Mgr_No IN (SELECT Emp_No FROM Emp WHERE Ename='Pradeep'
AND Hiredate <ALL (SELECT Hiredate FROM Emp));
OUTPUT :
no rows selected
14) Names of all Employees who are not working under Pradeep or Srinivas
Query :
SQL> SELECT Ename FROM Emp WHERE Mgr_No IN (SELECT Emp_No FROM Emp WHERE Ename<>'Pradeep' AND Ename<>'Srinivas');
OUTPUT :
ENAME--------------------SrinivasPradeepNirmalaKrishna
15) Names of all Employees who are working under Pradeep or Srinivas And joined before them
Query :
SQL> SELECT Ename FROM Emp where Mgr_No IN (SELECT Emp_No FROM Emp WHERE Ename='Pradeep' OR Ename='Srinivas') AND Hiredate<ALL (SELECT Hiredate FROM Emp);
OUTPUT :
no rows selected
16) Names of employees in the Accounting department
Query :
SQL> SELECT Ename FROM Emp WHERE Dept_No IN (SELECT DeptNo FROM Dept WHERE dName='Accounting');
OUTPUT :
no rows selected
17) Names of all analysts
Query :
SQL> SELECT Ename FROM Emp WHERE Jcode IN (SELECT jCode FROM Job WHERE jName = 'Analyst');
OUTPUT :
ENAME--------------------SrinivasPradeep
18) Find Dept Names with some Employees earning less than 4lakhs
Query :
SQL> SELECT DName FROM Dept WHERE Deptno IN (SELECT Dept_no FROM Emp WHERE Salary<400000);
OUTPUT :
no rows selected
19) Find the Job function of Aravind
Query :
SQL> SELECT JName FROM Job WHERE JCode IN (SELECT JCODE FROM Emp WHERE Ename='Aravind');
OUTPUT :
no rows selected
20) Name all the Locations having sales Dept
Query :
SQL> SELECT JName FROM Job WHERE JCode IN (SELECT JCODE
FROM Emp WHERE Ename='Aravind');
OUTPUT :
LNAME---------------BangaloreKakinada
21) Names of Employees who are managers of other Employees
Query :
SQL> SELECT Ename FROM Emp WHERE Emp_No IN
(SELECT Mgr_No FROM Emp);
OUTPUT :
ENAME-------------------VenkatNirmalaPradeepSrinivas
22) All the Employees whose Salary is maximum
Query :
SQL> SELECT Ename FROM Emp WHERE Salary>=ALL
(SELECT Salary FROM Emp);
OUTPUT :
ENAME--------------------Venkat
23) All the Employees who joined at the earliest
Query :
SQL> SELECT Ename FROM Emp WHERE Hiredate<=ALL
(SELECT Hiredate FROM Emp);
OUTPUT :
ENAME--------------------Srinivas
24) Names of Employees earning more than Pradeep or Srinivas
Query :
SQL> SELECT Ename FROM Emp WHERE Salary>=All (SELECT Salary FROM Emp
WHERE Ename='Pradeep' OR
Ename ='Srinivas');
OUTPUT :
ENAME--------------------VenkatPradeepSrinivas
WEEK-4
25) Names of Employees working under an employee reporting to President
Query :
SQL> SELECT Ename FROM Emp WHERE Mgr_No IN (SELECT Emp_No FROM Emp WHERE JCODE IN (SELECT JCode FROM Job WHERE Name='President'));
OUTPUT :
ENAME--------------------NirmalaPradeepSrinivas
26) Job functions of all the employees who are Managers of other Employees.
Query :
SQL> SELECT JName, JCode FROM Job WHERE JCode IN (SELECT JCODE FROM Emp WHERE Emp_No IN (SELECT Mgr_No
FROM Emp));
OUTPUT :
JNAME JCODE--------------- ----------Analyst 669Manager 671President 672
27) Names of Employees under Kakinada Location.
Query :
SQL> SELECT Ename FROM Emp, DEPT WHERE Dept_no=Deptno AND LCODE IN (SELECT LCode FROM Loc WHERE LName='Kakinada');
OUTPUT :
ENAME--------------------Krishna
28) Names of Employees who are analyst and also managers of other Employees
Query :
SQL> SELECT ename FROM emp WHERE JCODE IN (SELECT Jcode FROM job WHERE JName='Analyst') AND Emp_no IN (SELECT mgr_no FROM emp);
OUTPUT :
ENAME--------------------PradeepSrinivas
29) All the Analysts in the operation department
Query :
SQL> SELECT Ename FROM Emp WHERE Dept_No IN
(SELECT DeptNo FROM Dept WHERE DName='Operations')
AND JCODE IN
(SELECT JCode FROM Job WHERE JName='Clerk');
OUTPUT :
no rows select ed
30) Names of all the analysts in Kakinada area
Query :
SQL> SELECT ename FROM emp WHERE JCODE= (SELECT Jcode FROM job WHERE JName='analyst');
OUTPUT :
no rows selected
31) All Employees reporting to President
Query :
SQL> SELECT Ename FROM Emp WHERE Mgr_No IN
(SELECT Emp_No FROM Emp WHERE JCODE IN
(SELECT JCode FROM Job WHERE JName='President'));
OUTPUT :
ENAME--------------------NirmalaPradeepSrinivas
32) All the analysts reporting to President
Query :
SQL> SELECT ename FROM emp WHERE JCODE= (SELECT Jcode FROM job WHERE JName='Analyst') AND Mgr_no= (SELECT emp_no FROM emp WHERE JCODE= (SELECT Jcode FROM job WHERE JName='president'));
OUTPUT :
no rows selected
33) SELECT all Employees who joined earliest in their own department
Query :
SQL> SELECT Ename FROM Emp WHERE Hiredate<=ALL (SELECT Hiredate
FROM Emp WHERE Dept_no=Dept_no);
OUTPUT :
ENAME--------------------Srinivas
34) Write a query to display the top 3
Query :
SQL> SELECT Ename, Salary FROM Emp e WHERE 2>= (SELECT COUNT (*) FROM Emp WHERE e.Salary<Salary);
OUTPUT :
ENAME SALARY-------------------- ----------Venkat 1200000Pradeep 1000000Srinivas 1000000
35) Find the Employees who are drawing maximum Salary in respective departments
Query :
SQL> SELECT Ename
FROM Emp e WHERE salary>= all (SELECT salary
FROM Emp WHERE dept_no=e.dept_no);
OUTPUT :ENAME--------------------VenkatNirmalaSrinivasKrishnaDeepaKeerthi
6 rows selected.
36) Find the Employees who are getting maximum Salary in same Job
Query :
SQL> SELECT Ename FROM Emp e WHERE Salary>=ALL (SELECT Salary
FROM Emp WHERE Jcode=e.Jcode);
OUTPUT :ENAME--------------------VenkatNirmalaPradeepSrinivasDeepaKeerthi
6 rows selected.
WEEK-5
37) Every Employee along with his Job function
Query :
SQL> SELECT e.Ename, j.JName FROM Emp e, Job j WHERE e.JCODE=j.JCodE;
OUTPUT :
ENAME JNAME-------------------- ---------------Venkat PresidentNirmala ManagerPradeep AnalystSrinivas AnalystKrishna StaffDeepa StaffKeerthi Staff
7 rows selected.
38) Names of all Employee & their Dept names
Query :
SQL> SELECT e.Ename, d.DName FROM Emp e, Dept d WHERE e.Dept_No=d.DeptNo;
OUTPUT :
ENAME DNAME-------------------- ---------------Nirmala ResearchSrinivas SalesPradeep OperationsVenkat OperationsKrishna Research
39) All the Employees & their Dept names only for those Employees who are working in Kakinada
Query :
SQL> SELECT e.Ename, d.DName FROM Emp e, Dept d WHERE e.Dept_No=d.DeptNo AND LCODE IN (SELECT LCode FROM Loc WHERE LName='Kakinada');
OUTPUT :
ENAME DNAME-------------------- ---------------Krishna Research
40) Get all the Employees, Deptname for those Employees who are working as Clerks
Query :
SQL> SELECT Ename, DName FROM Emp e, Dept d WHERE e.Dept_No=d.DeptNo AND JCODE IN
(SELECT JCode FROM Job WHERE JName='Clerk');
OUTPUT :
no rows selected
41) Names of all Employees and his Managers numbers
Query :
SQL> SELECT e1.Ename, e2.Ename FROM Emp e1, Emp e2 WHERE e2.Emp_No=e1.Mgr_No;
OUTPUT :
ENAME ENAME-------------------- --------------------Srinivas VenkatPradeep VenkatNirmala VenkatKrishna NirmalaDeepa PradeepKeerthi Srinivas
6 rows selected.
42) Find Employees and their department name and department Location whose salary<400000
Query :
SQL> SELECT Ename, d.DName, l.LName FROM Emp e, Dept d, Loc l WHERE e.Dept_No=d.DeptNo
AND d.LCODE=l.LCode
AND Salary IN (SELECT Salary FROM Emp WHERE Salary<400000);
OUTPUT :
no rows selected
WEEK-6
41) Total salary of all Employees
Query :
SQL> SELECT SUM (Salary) FROM Emp;
OUTPUT :
SUM(SALARY)----------- 5700000
42) The max salary of all the Employees
Query :
SQL>SELECT MAX (Salary) FROM Emp;
OUTPUT :
MAX(SALARY)----------- 1200000
43) Find the number of Employees in the Employee table
Query :
SQL> SELECT COUNT (ENAME) FROM Emp;
OUTPUT :
COUNT(ENAME)------------ 7
44) Total salary of all the Employees who are in DeptNo=20
Query :
SQL> SELECT SUM (Salary) FROM Emp WHERE Dept_No=20;
OUTPUT :
SUM(SALARY)----------- 800000
45) All the Employees whose salary is maximum in Sales department
Query :
SQL> SELECT MAX (SALARY) FROM EMP WHERE DEPT_NO IN (SELECT DEPTNO
FROM DEPT WHERE DNAME='SALES');OUTPUT :
MAX(SALARY)-----------
46) Senior most Employees in the Research department
Query :
SQL> SELECT MIN (HIREDATE) FROM EMP WHERE DEPT_NO IN (SELECT DEPTNO
FROM DEPT WHERE DNAME='Research');
OUTPUT :
MIN(HIRED---------09-OCT-05
47) Find the maximum salary for all the Analyst
Query :
SQL> SELECT MAX (SALARY) FROM EMP WHERE JCODE IN (SELECT JCODE FROM JOB
WHERE JNAME='Analyst');OUTPUT :
MAX(SALARY)----------- 1000000
48) Find the average salary in accounting department
Query :
SQL> SELECT AVG (SALARY) FROM EMP WHERE DEPT_NO IN (SELECT DEPTNO FROM DEPT WHERE DNAME='Accounting');
OUTPUT :
AVG(SALARY)-----------
49) Find all the Employees whose joined date is earliest
Query :
SQL> SELECT ENAME FROM EMP WHERE HIREDATE IN (SELECT MIN(HIREDATE)
FROM EMP;
OUTPUT :
ENAME--------------------Srinivas
50) The max salary in each department
Query :
SQL> SELECT MAX(SALARY) FROM EMP GROUP BY DEPT_NO;
OUTPUT :
MAX(SALARY)----------- 1000000 800000 600000 600000 1200000 500000
6 rows selected.
51) Max salary of all the Employees who are in accounting department
Query :
SQL> SELECT MAX (SALARY) FROM EMP WHERE DEPT_NO = (SELECT DEPTNO
FROM DEPT WHERE DNAME='Accounting');
OUTPUT :
MAX(SALARY) -----------
52) Average salary of each department which has atleast 2 Employees
Query :
SQL> SELECT AVG (salary) FROM EmP GROUP BY Dept_No HAVING COUNT (*)>1;
OUTPUT :
AVG(SALARY)----------- 1100000
53) Find the no. of Analysts
Query :
SQL> SELECT COUNT (EMP_NO) FROM EMP WHERE JCODE = (SELECT JCODE FROM JOB WHERE JNAME='Analyst');OUTPUT :
COUNT(EMP_NO) ------------- 2
54) Find the total salary of all the Clerks
Query :
SQL> SELECT SUM (EMP_NO) FROM EMP WHERE JCODE = (SELECT JCODE
FROM JOB WHERE JNAME='Clerk');
OUTPUT :
SUM(EMP_NO) ----------- 55) Give the total salary of each department
Query :
SQL> SELECT SUM(SALARY),DEPT_NO FROM EMP GROUP BY DEPT_NO;
OUTPUT :
SUM(SALARY) DEPT_NO ----------- ---------- 1000000 30 800000 20 600000 24 600000 23 2200000 40 500000 12
6 rows selected.
56) For each Job give total salary
Query :
SQL> SELECT SUM(SALARY),JCODE FROM EMP GROUP BY JCODE;
OUTPUT :
SUM(SALARY) JCODE ----------- ---------- 1200000 672 800000 671 2000000 669 1700000 668
57) Deptname & no. of Employees in each department
Query :
SQL> SELECT COUNT(EMP_NO) ,DNAME FROM EMP E,DEPT D WHERE dept_no =deptno GROUP By Dname Having avg(salary)>=400000
OUTPUT :
COUNT(EMP_NO) DNAME ------------- --------------- 2 Research 1 Sales 2 Operations
58) No.of Employees for each Job name
Query :
SQL> SELECT COUNT(JCODE),JCODE FROM EMP GROUP BY JCODE;
OUTPUT :
COUNT(JCODE) JCODE ------------ ---------- 1 672 1 671 2 669 3 668
59) Sum of salary for Clerks for each department
Query :
SQL> SELECT SUM (Salary), Dept_No FROM Emp WHERE JCODE=
(SELECT JCode FROM Job WHERE JName='Clerk')
GROUP BY Dept_No
OUTPUT :
no rows selected
60) No.of Employees in each department that has Location in Kakinada
Query :
SQL> SELECT COUNT(ENAME) FROM EMP WHERE DEPT_NO IN
(SELECT DEPTNO FROM DEPT WHERE LCODE IN
(SELECT LCODE FROM LOC WHERE LNAME='Kakinada'));
OUTPUT :
COUNT(ENAME) ------------ 1
61) Dept name, count of Employees of those Dept that have an average salary>400000
Query :
SQL> SELECT DNAME, COUNT(E.EMP_NO) FROM DEPT D, EMP E WHERE DEPT_NO =DEPTNO GROUP By D.DNAME Having avg(salary)>=400000;
OUTPUT :
DNAME COUNT(E.EMP_NO)--------------- ---------------Research 2Sales 1Operations 2
WEEK – 7
62) Display the joining month/year of Nirmala
Query :
SQL> SELECT TO_CHAR (hiredate, 'mm/yy') MMYY FROM Emp WHERE ename='Nirmala';
OUTPUT :
MMYY-----04/07
63) For each employee display the employee’s name and calculate the number of months between today and the date the employee was hired label the column months worked order the results by the number of months employed Round the number of months up to the closest whole number
Query :
SQL> SELECT Ename, ROUND (MONTHS_BETWEEN (SYSDATE, hiredate)) months_worked, LAST_DAY(HIREDATE) FROM Emp ORDER BY months_worked;
OUTPUT :
ENAME MONTHS_WORKED LAST_DAY(-------------------- ------------- ---------Deepa 42 30-SEP-07Nirmala 47 30-APR-07Keerthi 57 30-JUN-06Venkat 61 28-FEB-06Pradeep 65 31-OCT-05Krishna 65 31-OCT-05Srinivas 70 31-MAY-05
7 rows selected.
64) Display the employee number; hire Date using RUND AND TRUNK functions.
Query :
SQL> SELECT Emp_No, hiredate, ROUND (hiredate), TRUNC (Hiredate) FROM Emp
OUTPUT :
EMP_NO HIREDATE ROUND(HIR TRUNC(HIR---------- --------- --------- --------- 1 01-FEB-06 01-JAN-06 01-JAN-06 2 02-APR-07 01-JAN-07 01-JAN-07 3 10-OCT-05 01-JAN-06 01-JAN-05 4 08-MAY-05 01-JAN-05 01-JAN-05 5 09-OCT-05 01-JAN-06 01-JAN-05 6 09-SEP-07 01-JAN-08 01-JAN-07 7 05-JUN-06 01-JAN-06 01-JAN-06
65) Display the names of employees whose name contains the letter ‘a’ with its position?
Query :
SQL> SELECT Ename, INSTR (Ename, 'a') position FROM Emp WHERE INSTR (Ename, 'a') < >0;OUTPUT :
ENAME POSITION-------------------- ----------Venkat 5Nirmala 5Pradeep 3Srinivas 7Krishna 7Deepa 5
6 rows select
66) Convert the first letter of each department in capital and remaining letters to lowercase
Query :
SQL> select INITCAP (dname) FROM Dept;
OUTPUT :INITCAP(DNAME)---------------AccountingResearchSalesOperationsResearchSalesOperations
7 rows selected.
67) Capitalize the names of employees in employee table
Query :
SQL> SELECT UPPER (Ename) FROM Emp;
OUTPUT :
UPPER(ENAME)--------------------VENKATNIRMALAPRADEEPSRINIVASKRISHNADEEPAKEERTHI
7 rows select
68) Display the names of employees along with length
Query :
SQL> SELECT Ename, LENGTH (Ename) FROM Emp;
OUTPUT :
ENAME LENGTH(ENAME)-------------------- -------------Venkat 6Nirmala 7Pradeep 7Srinivas 8Krishna 7Deepa 5Keerthi 7
7 rows selected.
69) Display the Job and Salary such that every employee salary is 10 Digits left less pad a $ symbol.
Query :
SQL> SELECT Ename, LPAD (salary, 10, '$') FROM Emp;
OUTPUT :
ENAME LPAD(SALARY,10,'$')-------------------- ----------------------------------------Venkat $$$1200000Nirmala $$$$800000Pradeep $$$1000000Srinivas $$$1000000Krishna $$$$500000Deepa $$$$600000Keerthi $$$$600000
7 rows selected.
70) Display the Job and Salary such that every employee salary is 10 Digits right less pad a $ symbol.
Query :
SQL> SELECT Ename, RPAD (salary, 10, '*') FROM Emp;
OUTPUT :
ENAME RPAD(SALARY,10,'*')-------------------- ----------------------------------------Venkat 1200000***Nirmala 800000****Pradeep 1000000***Srinivas 1000000***Krishna 500000****Deepa 600000****Keerthi 600000****
7 rows selected.
71) Display Hiredate by adding 4 months.
Query :
SQL> SELECT ADD_MONTHS(HIREDATE,4) FROM emp;
OUTPUT :
ADD_MONTH---------01-JUN-0602-AUG-0710-FEB-0608-SEP-0509-FEB-0609-JAN-0805-OCT-06
7 rows selected.
72) Display next day of 06-March-2011 which is Saturday
Query :
SQL> SELECT NEXT_DAY('06-MAR-2011','saturyday') FROM DUAL;
OUTPUT :
NEXT_DAY(---------12-MAR-11
WEEK - 8
73) Create a Emp_Det view with 4 columns emp_no:, empo_name, salary,dept.no:.Query :
SQL> CREATE VIEW EMP_DET AS SELECT EMP_NO, EName, salary,dept_no from Emp;
OUTPUT :
View created.
74) create a emp_det _analyst view with 2 columns emp_no,emp_name, whose job code is 669?
Query :
SQL> CREATE VIEW EMP_DET_Analyst AS SELECT EMP_NO, EName from Emp where jcode=669;
OUTPUT :
View created.
75) Display all of the above views?
Query :SQL> SELECT * FROM EMP_DET;
OUTPUT : EMP_NO ENAME SALARY DEPT_NO---------- -------------------- ---------- ---------- 1 Venkat 1200000 40 2 Nirmala 800000 20 3 Pradeep 1000000 40 4 Srinivas 1000000 30 5 Krishna 500000 12 6 Deepa 600000 23 7 Keerthi 600000 24
SQL> SELECT * FROM EMP_DET_Analyst;
OUTPUT :
EMP_NO ENAME---------- -------------------- 3 Pradeep 4 Srinivas
76) Create a view with emp_det_12 view with 2 columns with EMP_NO and ENAME whose DEPT_NO IS 12
Query :
SQL> > CREATE VIEW EMP_DET_12 AS SELECT EMP_NO, EName from Emp where DEPT_No=12;
OUTPUT :
View created.
77) Drop Emp_det_12 view?
Query :
SQL> DROP view Emp_Det_12;
OUTPUT :
View dropped.
WEEK – 9
a) Write a PL/SQL program to read Employee Details from User and display Employee Details from EMP Table using Exception.
PL/SQL Program :
SQL> DECLARE 2 v_empname VARCHAR(20); 3 v_sal NUMBER (7); 4 v_empno NUMBER (3); 5 BEGIN 6 /* Read Emp_no from user and assign to : */ 7 v_empno := &v_empno; 8 SELECT ename, salary, emp_no INTO 9 v_empname, v_sal, v_empno 10 from emp 11 where emp_no=v_empno; 12 dbms_output.put_Line(v_empno); 13 dbms_output.put_Line(v_empname); 14 dbms_output.put_Line(v_sal); 15 EXCEPTION WHEN NO_DATA_FOUND 16 THEN 17 dbms_output.put_Line('EMP NO is NOT AVAILABLE'); 18 END; 19 /
OUTPUT :
Enter value for v_empno: 2old 7: v_empno := &v_empno;new 7: v_empno := 2;2Nirmala800000
PL/SQL procedure successfully completed.
b) Wrie a PL/SQL program to read a value from the user and check whether that number is even or odd PL/SQL Program :
SQL> DECLARE 2 N NUMBER; 3 BEGIN 4 N := &N; 5 IF MOD (N, 2)=0 THEN 6 dbms_output.put_Line(N|| ' is EVEN'); 7 ELSE 8 dbms_output.put_Line(N|| ' is ODD'); 9 END IF; 10 END; 11 /
OUTPUT 1 :
Enter value for n: 2old 4: N := &N;new 4: N := 2;2 is EVEN
PL/SQL procedure successfully completed.
OUTPUT 2 :
SQL> /Enter value for n: 3old 4: N := &N;new 4: N := 3;3 is ODD
PL/SQL procedure successfully completed.
c) Write a pl/sql program that accepts a number and add 1 to number If given number less than 10, subtract 1 from the number IF it is greater than10, and add 10 to it, IF it equals 10. Now display the value of resultant number and also tell whether it is even or odd using Nested IF.
PL/SQL Program :
SQL> DECLARE 2 N NUMBER := &NUM; 3 K NUMBER; 4 BEGIN 5 IF N<10 THEN 6 K:=N+1; 7 ELSE IF N>10 THEN 8 K:=N-1; 9 ELSE IF N=10 THEN 10 K:=N+10; 11 END IF; 12 END IF; 13 END IF; 14 DBMS_OUTPUT.PUT_LINE('The Given Number became ' || K); 15 IF MOD(K,2)=0 THEN 16 DBMS_OUTPUT.PUT_LINE(K|| ' IS EVEN'); 17 ELSE 18 DBMS_OUTPUT.PUT_LINE(K|| ' IS ODD'); 19 END IF; 20 END; 21 /
OUTPUT :
Enter value for num: 5old 2: N NUMBER := &NUM;new 2: N NUMBER := 5;The Given Number became 66 IS EVEN
PL/SQL procedure successfully completed.
WEEK – 10
a) Wrie a PL/SQL program to read Employee No from user and display all the Employee details upto that number using while loop.
PL/SQL Program :
SQL> DECLARE 2 v_empname VARCHAR(20); 3 v_sal NUMBER (7); 4 v_empno NUMBER (3); 5 i NUMBER:=1; 6 N NUMBER; 7 BEGIN 8 /* Read Emp_no from user and assign to : */ 9 v_empno := &v_empno; 10 N := v_empno; 11 while i<=N 12 LOOP 13 SELECT ename, salary, emp_no INTO 14 v_empname, v_sal, v_empno 15 from emp 16 where emp_no=i; 17 dbms_output.put_Line(v_empno); 18 dbms_output.put_Line(v_empname); 19 dbms_output.put_Line(v_sal); 20 i := i+1; 21 END LOOP; 22 EXCEPTION WHEN NO_DATA_FOUND 23 THEN 24 dbms_output.put_Line('EMP NO is NOT AVAILABLE'); 25 END; 26 /
OUTPUT :
Enter value for v_empno: 3old 9: v_empno := &v_empno;new 9: v_empno := 3;1Venkat12000002Nirmala8000003Pradeep1000000
PL/SQL procedure successfully completed.
b) Wrie a PL/SQL program to read number from the user and display the fibonacci series upto that number using WHILE Loop
PL/SQL Program :
SQL> DECLARE 2 I NUMBER(3); 3 A INTEGER:=0; 4 B INTEGER:=1; 5 C INTEGER; 6 SUM NUMBER(3); 7 N NUMBER(3); 8 BEGIN 9 I:=1; 10 N:=&N; 11 DBMS_OUTPUT.PUT_LINE(A); 12 DBMS_OUTPUT.PUT_LINE(B); 13 WHILE (I<=N) 14 LOOP 15 DBMS_OUTPUT.PUT_LINE(C); 16 C:=A+B; 17 A:=B; 18 B:=C; 19 I:=I+1; 20 END LOOP; 21 END; 22 /
OUTPUT :
Enter value for n: 5old 10: N:=&N;new 10: N:=5;011235
PL/SQL procedure successfully completed.
WEEK – 11
a) Wrie a PL/SQL program to read a number from the user and print the Factorial of that number using FOR LOOP
PL/SQL Program :
SQL> DECLARE 2 i NUMBER:=1; 3 NUM NUMBER := 1; 4 N NUMBER := &N; 5 BEGIN 6 i := N; 7 FOR i IN 1..N 8 LOOP 9 NUM := NUM*i; 10 END LOOP; 11 dbms_output.put_Line(NUM); 12 END; 13 /
OUTPUT :
Enter value for n: 5old 4: N NUMBER := &N;new 4: N NUMBER := 5;120
PL/SQL procedure successfully completed.
b) Write a pl/sql program that accepts 2 Nos from the user and display the emp details between them.
PL/SQL Program :
SQL> DECLARE 2 v_empname VARCHAR(20); 3 v_sal NUMBER (7); 4 v_empno NUMBER (3); 5 MINVALUE NUMBER; 6 MAXVALUE NUMBER; 7 BEGIN 8 /* Read Emp_no from user and assign to : */ 9 MINVALUE :=&MINVALUE; 10 v_empno := &MAXVALUE; 11 MAXVALUE := v_empno; 12 while MINVALUE <= MAXVALUE 13 LOOP 14 SELECT ename, salary, emp_no INTO 15 v_empname, v_sal, v_empno 16 from emp 17 where emp_no=MINVALUE; 18 dbms_output.put_Line(v_empno); 19 dbms_output.put_Line(v_empname); 20 dbms_output.put_Line(v_sal); 21 MINVALUE := MINVALUE+1; 22 END LOOP; 23 EXCEPTION WHEN NO_DATA_FOUND 24 THEN 25 dbms_output.put_Line('EMP NO is NOT AVAILABLE'); 26* END;
OUTPUT :
Enter value for minvalue: 2old 9: MINVALUE :=&MINVALUE;new 9: MINVALUE :=2;Enter value for maxvalue: 4old 10: v_empno := &MAXVALUE;new 10: v_empno := 4;2Nirmala8000003Pradeep10000004Srinivas1000000
PL/SQL procedure successfully completed.
WEEK – 12
a) Create a procedure which accept employee number from the user and return employee name,salary,commission by using in and out arguments.
PL/SQL Procedure :
SQL> CREATE OR REPLACE PROCEDURE EMP_3 (EMPNO IN NUMBER, EMPNAME OUT emp.ENAME%TYPE, ESALARY OUT emp.SALARY%TYPE, ECOMMISSION OUT emp.COMMISSION%TYPE) IS BEGIN SELECT ENAME,SALARY,COMMISSION INTO EMPNAME, ESALARY, ECOMMISSION FROM emp WHERE EMP_NO=EMPNO; END EMP_3 ;
Procedure created.
OUTPUT :
SQL> VARIABLE GS NUMBER;SQL> VARIABLE GG NUMBER;SQL> VARIABLE GN VARCHAR2(20);SQL> EXEC EMP_3(2,:GN,:GS,:GG);PL/SQL procedure successfully completed.
SQL> PRINT GN GS GG;
GN--------------------------------Nirmala
GS---------- 800000
GG---------- 50000
b) Create a procedure which accept employee number from the user and display employee name,salary and commission.
PL/SQL Procedure :
SQL> CREATE OR REPLACE PROCEDURE EMP_2(EMPNO IN NUMBER) IS ESALARY NUMBER(10); BEGIN SELECT SALARY INTO ESALARY FROM emp WHERE EMP_NO=EMPNO; DBMS_OUTPUT.PUT_LINE('Salary before updated:'||ESALARY); UPDATE EMP SET SALARY=SALARY+(SALARY*0.1) WHERE EMP_NO=EMPNO; SELECT SALARY INTO ESALARY FROM emp WHERE EMP_NO=EMPNO; DBMS_OUTPUT.PUT_LINE('Salary after updated:'||ESALARY); END;
Procedure created.
OUTPUT :
SQL> EXEC EMP_2(4);Salary before updated:1000000Salary after updated:1100000
PL/SQL procedure successfully completed.