42
Oracle Assessment A WORK REPORT SUBMITTED IN PARTIAL FULLFILLMENT OF THE REQUIREMENT FOR THE DEGREE Bachelor of Computer Application Dezyne E’cole College 106/10, CIVIL LINES AJMER RAJASTHAN - 305001 (INDIA) (JUNE, 2015) www.dezyneecole.com SUBMITTED BY VIJAY KUMAR VERMA CLASS: BCA 3 RD YEAR

Vijay Kumar

Embed Size (px)

Citation preview

Oracle Assessment

A WORK REPORT SUBMITTED

IN PARTIAL FULLFILLMENT OF THE REQUIREMENT FOR THE DEGREE

Bachelor of Computer Application

Dezyne E’cole College

106/10, CIVIL LINES

AJMER

RAJASTHAN - 305001 (INDIA)

(JUNE, 2015)

www.dezyneecole.com

SUBMITTED BY

VIJAY KUMAR VERMA

CLASS: BCA 3RD YEAR

1

PROJECT ABSTRACT

I am VIJAY KUMAR VERMA Student of 3rd year doing my Bachelor Degree in Computer

Application.

In the following pages I gave compiled my work learnt during my 3rd year at college. The

subject is RDBMS. These assessments are based on Relational Database

Management System that is useful to work with front end (user interface) application.

Take example of an online form if the user filling up an online form (E.g. SBI Form, Gmail

registration Form) on to the internet whenever he/she clicks on the submit button the field

value is transfer to the backend database and stored in Oracle, MS-Access, My SQL,

SQL Server.

The purpose of a database is to store and retrieve related information later on. A database

server is the key to solving the problems for information management.

In these assessment we are using Oracle 10g as the Relation Database Software.

The back-end database is a database that is accessed by user indirectly through an

external application rather than by application programming stored within the database

itself or by low level manipulation of the data (e.g. through SQL commands).

Here in the following assessment we are performing the following operations:

1. Creating tables to store the data into tabular format (schemas of the data base)

2. Fetching the data from the database (Using Select Query)

3. Joining the multiple data tables into one (To reduces the redundancy of the data)

4. Nested Queries (Queries within Queries)

2

Contents

Select Statemens……………….…………………..…………….……………………………… 08

Grouping_Having..……………….……………..……………….……….……………………… 18

Function…………………………….……………..……………….……………………………… 23

Coverage Joins……………..….…….…………..……………….…………………….………… 30

Sub queries…..…………...………….…………..……………….…………………………….….34

3

1. Create an Employee Table (Emp) with Following Fields:

FIELDS DATA TYPE SIZE

EMPNO NUMBER 4

ENAME VARCHAR2 20

DEPTNO NUMBER 2

JOB VARCHAR2 20

SAL NUMBER 5

COMM NUMBER 4

MGR NUMBER 4

HIREDATE DATE -

How to create EMPLOYEE table.

Solution:

Create table employee

(EMPNO NUMBER (4),

ENAME VARCHAR2 (20),

DEPTNO NUMBER (2),

JOB VARCHAR2 (20),

SAL NUMBER (5),

COMM NUMBER (4),

MGR NUMBER (4),

HIREDATE DATE);

How to view the structure of Employee table.

Solution:

Desc employee

Output:

4

How to insert data in employee table.

Solution:

Insert into employee

(EMPNO, ENAME, DEPTNO, JOB, SAL, COMM, MGR, HIREDATE)

Values(:EMPNO,:ENAME,:DEPTNO,:JOB,:SAL,:COMM,:MGR,:HIREDATE)

Output:

How to fetch data from employee table.

Solution:

Select* from employee

Output:

5

2. Create a Department Table (Dept) with Following Fields:

FIELDS DATA TYPE SIZE

DEPTNO NUMBER 2

DNAME VARCHAR2 20

LOC (location) VARCHAR2 20

How to create DEPT table.

Solution:

Create table dept

(DEPTNO NUMBER (2),

DNAME VARCHAR2 (20),

LOC VARCHAR2 (20));

How to view the structure of Dept table.

Solution:

Desc dept

Output:

How to insert data in DEPT table.

6

Solution:

Insert into dept

(DEPTNO, DNAME, LOC)

Values (: DEPTNO,DNAME, :LOC)

Output:

How to fetch data from DEPT table.

Solution:

Select * from dept

Output:

3. Create a SalGrade Table with Following Fields:

FIELDS DATA TYPE SIZE

GRADE NUMBER 1

LOSAL NUMBER 5

HISAL NUMBER 5

How to create SALGRADE table.

Solution:

Create table salgrade

(GRADE NUMBER (1),

LOSAL NUMBER (5),

HISAL NUMBER (5));

7

How to view the structure of SALGRADE table.

Solution:

Desc salgrade

Output:

How to insert data in SALGRADE table.

Solution:

Insert into salgrade

(GRADE, HISAL, LOSAL)

Values (: GRADE,:HISAL,:LOSAL)

Output:

How to fetch data from SALGRADE table.

Solution:

Select * from salgrade

Output:

8

SELECT STATEMENT

1. List all the information about all Employees.

Solution:

Select* from employee

Output:

2. Display the Name of all Employees along with their Salary.

Solution:

Select ename, sal from employee

Output:

3. List all the Employee Names who is working with Department Number is 20.

Solution:

Select ename from employee

Where deptno=20

9

Output:

4. List the Name of all ‘ANALYST’ and ‘SALESMAN’.

Solution:

Select ename from employee

Where job in('Analyst','Salesman')

Output:

5. Display the details of those Employees who have joined before the end of Sept.

1981.

Solution:

Select * from employee

Where hiredate<'30-sep-1981'

Output:

6. List the Employee Name and Employee Number, who is ‘MANAGER’.

Solution:

Select empno,ename from employee

Where job='Manager'

Output:

10

7. List the Name and Job of all Employees who are not ‘CLERK’.

Solution:

Select ename,job from employee

Where job! ='Clerk'

Output:

8. List the Name of Employees, whose Employee Number is 7369,7521,7839,7934

or 7788.

Solution:

Select ename from employee

Where empno in (7369, 7521, 7839, 7934, 7788)

Output:

9. List the Employee detail who does not belongs to Department Number 10 and

30

Solution:

Select* from employee

11

Where deptno not in (10, 30)

Output:

10. List the Employee Name and Salary, whose Salary is vary from 1000 to 2000.

Solution:

Select ename, sal from employee

Where sal between 1000 and 2000

Output:

11. List the Employee Names, who have joined before 30-Jun-1981 and after Dec-

1981.

Solution:

Select ename from employee

Where hiredate<'30-Jun-1981' or hiredate>'31-Dec-1981'

Output:

12. List the Commission and Name of Employees, who are availing the

Commission.

12

Solution:

Select ename,comm from employee

Where comm is not null

Output:

13. List the Name and Designation (job) of the Employees who does not report to

anybody.

Solution:

Select ename,job from employee

Where mgr is null

Output:

14. List the detail of the Employees, whose Salary is greater than 2000 and

Commission is NULL.

Solution:

Select* from employee

Where sal>2000 and comm is null

Output:

13

15. List the Employee details whose Name start with ‘S’.

Solution:

Select* from employee

Where ename like 'S%'

Output:

16. List the Employee Names and Date of Joining in Descending Order of Date of

Joining. The column title should be “Date Of Joining”.

Solution:

Select ename,hiredate as "Date of joining" from employee

Order by "Date of joining" desc

Output:

17. List the Employee Name, Salary, Job and Department Number and display it in

Descending Order of Department Number, Ascending Order of Name and

Descending Order of Salary.

Solution:

Select ename,sal,job,deptno from employee

Order by deptno desc,ename asc,sal desc

Output:

14

18. List the Employee Name, Salary, PF, HRA, DA and Gross Salary; Order the result

in Ascending Order of Gross Salary. HRA is 50% of Salary, DA is 30% and PF is

10%.

Solution:

Select ename,sal,sal+sal*50/100+sal*30/100-sal*10/100 as "Netsalary"

From employee

Order by "Netsalary" asc

Output:

19. List Salesman from dept No 30.

Solution:

Select* from employee

Where deptno=30 and job='Salesman'

Output:

15

20. List Clerks from 20 and salesman from 30. In the list the lowest earning

employee must at top.

Solution:

Select* from employee

Where deptno=20 and job='Clerk' or deptno=30 and job='Salesman'

Order by sal asc

Output:

21. List different departments from Employee table.

Solution:

Select distinct deptno from employee

Output:

22. List employees having “S” at the end of their Name.

Solution:

Select* from employee

Where ename like '%s';

Output:

16

23. List employee who are not managed by anyone.

Solution:

Select* from employee

Where mgr is null

Output:

24. List employees who are having “TT” or “LL” in their names.

Solution:

Select* from employee

Where ename like '%tt%' or ename like '%ll%'

Output:

25. List employees earning salaries below 1500 and more than 3000.

Solution:

Select* from employee

Where sal not between 1500 and 3000

Output:

17

26. List employees who are drawing some commission. Display their total salary as

well.

Solution:

Select sal+comm from employee

Where comm is not null

Output:

27. List employees who are drawing more commission than their salary. Only those

records should be displayed where commission is given (also sort the output

in the descending order of commission).

Solution:

Select * from employee

Where comm>sal

Order by comm desc

Output:

28. List the employees who joined the company in the month of “FEB”.

Solution:

18

Select* from empy

Where hiredate between '1-feb-1981' and '28-Feb-1981'

Output:

29. List employees who are working as salesman and having names of four

characters.

Solution:

Select* from employee

Where job='Salesman' and ename like '____'

Output:

30. List employee who are managed by 7839.

Solution:

Select* from employee

Where mgr=7839

Output:

19

GROUPING, HAVING ETC.

1. List the Department number and total number of employees in each department.

Solution:

Select deptno, count (empno) from employee

Group by deptno

Output:

2. List the different Job names (Designation) available in the EMP table.

Solution:

Select distinct job from employee

Output:

3. List the Average Salary and number of Employees working in Department

number 20.

Solution:

Select avg (sal), count (empno) from employee

Where deptno=20

Group by deptno

20

Output:

4. List the Department Number and Total Salary payable at each Department.

Solution:

Select sum (sal), deptno

From employee

Group by deptno

Output:

5. List the jobs and number of Employees in each Job. The result should be in

Descending Order of the number of Employees.

Solution:

Select job, count (empno) from employee

Group by job

Order by count (empno) desc

Output:

21

6. List the Total salary, Maximum Salary, Minimum Salary and Average Salary of

Employees job wise, for Department number 10 only.

Solution:

select sum(sal),max(sal),min(sal),avg(sal),job

From employee

Where deptno=10

Group by job

Output:

7. List the Average Salary of each Job, excluding ‘MANAGERS’.

Solution:

Select job, avg (sal) from employee

Where job! ='Manager'

Group by job

Output:

8. List the Average Monthly Salary for each Job within each department.

Solution:

Select deptno,job,avg(sal) from employee

Group by job,deptno

Output:

22

9. List the Average Salary of all departments, in which more than two people are

working.

Solution:

Select deptno, avg (sal), count (empno)

From employee

Group by deptno

Having count (empno)>2

Output:

10. List the jobs of all Employees where Maximum Salary is greater than or equal

to 5000.

Solution:

Select job,max(sal)

From employee

Group by job

Having max (sal)>=5000

Output:

23

11. List the total salary and average salary of the Employees job wise, for

department number 20 and display only those rows having average salary

greater than 1000.

Solution:

Select job,sum(sal+comm),avg(sal) from employee

Where deptno=20

Group by job

Having avg(sal)>1000

Output:

12. List the total salaries of only those departments in which at least 2 employees

are working.

Solution:

Select deptno,count(empno),sum(sal+comm)

From empy

Group by deptno

Having count (empno)>=4

Output:

13. List the Number of Employees Managed by Each Manager

Solution:

Select count (empno), mgr

From employee

Group by mgr

Output:

24

14. List Average Commission Drawn by all Salesman

Solution:

Select avg (comm)

From employee

Where job='Salesman'

Group by job

Output:

25

FUNCTIONS

1. Calculate the remainder for two given numbers. (213,9)

Solution:

Select mod (213, 9) from dual

Output:

2. Calculate the power of two numbers entered by the users at run time of the

query.

Solution:

Select power (: first,: second) from dual

Insert Values:

Output:

3. Enter a number and check whether it is negative or positive.

Solution:

Select sign (: n) from dual

Insert Values:

Output:

26

4. Calculate the square root for the given number. (i.e. 10000).

Solution:

Select sqrt (: n) from dual

Insert Values:

Output:

5. Enter a float number and truncate it up to 1 and -2 places of decimal.

Solution:

Select trunc (: n,-2) as "upto-2", trunc (: n,1) as "upto1" from dual

Insert values:

Output:

6. Find the rounding value of 563.456, up to 2, 0 and -2 places of decimal.

Solution:

Select round (563.456, 2) as "upto2", round (563.456) as "upto0", round (563.456, 2)

as "upto2" from dual

27

Output:

7. Accept two numbers and display its corresponding character with the

appropriate title.

Solution:

Select chr (: n) as "Frist", Chr (: m) as "Second" from dual

Insert Values:

Output:

8. Input two names and concatenate it separated by spaces.

Solution:

Select concat (concat (: n,' '),: m) from dual

Insert Values:

Output:

9. Display all the Employee names-with first character in upper case from EMP

table.

28

Solution:

Select initcap (ename) from employee

Output:

10. Display all the department names in upper and lower cases.

Solution:

Select upper (dname), lower (dname) from dept

Output:

11. Extract the character S and A from the left and R and N from the right of the

Employee name from EMP table.

Solution:

Select ltrim (ename,'sa') as "Left", rtrim (ename,'rn') as "Right" from employee

Output:

29

12. Change all the occurrences of CL with P in job domain.

Solution:

Select job,replace(job,'Cl','P') from employee

Output:

13. Display the information of those Employees whose name has the second

character A.

Solution:

Select* from employee

Where instr (ename,'a') =2

Output:

14. Display the ASCII code of the character entered by the user.

Solution:

Select ascii (: n) from dual

Insert Values:

Output:

30

15. Display the Employee names along with the location of the character A in the

Employees name from EMP table where the job is CLERK.

Solution:

Select instr (ename,'a') from empy

Where job='Clerk'

Output:

16. Find the Employee names with maximum number of characters in it.

Solution:

Select max (length (ename)) from employee

Output:

17. Display the salary of those Employees who are getting salary in four figures.

Solution:

Select* length (sal) from employee

Where length (sal) =4

Output:

31

18. Display only the first three characters of the Employees name and their H RA

(salary * .20), truncated to decimal places.

Solution:

Select substr (ename, 1, 3), trunc (sal*.20) as "Total sal" from employee

Output:

19. List all the Employee names, who have more than 20 years of experience in the

company.

Solution:

Select ename,round(months_between(sysdate,hiredate)/12) from employee

Where round (months_between (sysdate,hiredate)/12)>20

Output:

20. Display the name and job for every Employee, while displaying jobs, 'CLERK'

should be displayed as 'LDC' and 'MANAGER' should be displayed as 'MNGR'.

The other job title should be as they are.

32

Solution:

Select ename,job,decode(job,'Clerk','LDC','Manager','MNGR',job) new_job from

employee

Output:

21. Display Date in the Following Format Tuesday 31 December 2002.

Solution:

Select to_char (Sysdate,'DAY dd MONTH yyyy') from dual

Output:

22. Display the Sunday coming After 3 Months from Today’s Date.

Solution:

Select sysdate,next_day(add_months(sysdate,3),1) from dual

Output:

33

Coverage Joins

1. List Employee Name, Job, Salary, Grade & the Location where they are working

Solution:

Select ename,job,sal,grade,loc from employee join salgrade

On sal between losal and hisal

Join dept using (deptno)

Output:

2. Count the Employees For Each Salary Grade for Each Location

Solution:

Select loc, grade, count (empno) from employee join salgrade

On sal between losal and hisal join dept using (deptno)

Group by grade,loc

Output:

34

3. List the Average Salary for Those Employees who are drawing salaries of grade

2

Solution:

Select grade,avg(sal) from employee join salgrade

On sal between losal and hisal

Where grade=2

Group by grade

Output:

4. List Employee Name, Job, Salary Of those employees who are working in LDC

or SALSE department but drawing salaries of grade 2

Solution:

Select ename,job,sal from employee join salgrade

On sal between losal and hisal

Join dept using (deptno)

Where grade=2 and dname in ('LDC','SALES')

Output:

5. List employee Names, Manager Names & also Display the Employees who are

not managed by anyone

Solution:

Select e.ename employee,m.ename manager

From employee e left outer join employee m

On e.empno=m.mgr

Output:

35

6. List Employees who are drawing salary more than the salary of SMIT

Solution:

Select e.* from employee e join employee f

On e.sal>f.sal

Where f.ename='Smit'

Output:

7. List Employees who have joined the company before their managers

Solution:

Select e.* from employee e join employee f

On e.hiredate>f.hiredate

Where e.mgr=f.empno

Output:

8. List Employee Name, Job, Salary, Department No, Department name and

Location Of all employees Working at NEW YORK

Solution:

Select ename,job,sal,deptno,dname,loc from employee join dept using(deptno)

36

Where loc='NEWYORK'

Output:

9. List Employee Name, Job, Salary, Hire Date and Location Of all employees

reporting in Accounting or Sales Department

Solution:

Select ename,job,sal,deptno,hiredate,dname,loc

From employee join dept

Using (deptno)

Where dname in('SALES','Account')

Output:

10. List Employee Name, Job, Salary, Department Name, Location for Employees

drawing salary more than 2000 and working at New York

Solution:

Select ename,job,sal,dname,loc from employee

Join dept

Using (deptno)

Where sal>2000 and loc='NEWYORK'

Output:

11. List Employee Name, Job, Salary, Department Name, Location Of all

employees, also list the Department Details in which no employee is working

37

Solution:

Select ename,job,sal,dname,loc from employee right outer join dept using(deptno)

Output:

38

Nested and Correlated sub queries

1. List Employees who are working in the Sales Department (Use Nested)

Solution:

Select* from employee

Where deptno= (select deptno from dept

Where dname='SALES')

Output:

2. List Departments in which at least one employee is working (Use Nested)

Solution:

Select * from employee

Where deptno in (select deptno from dept)

Output:

3. Find the Names of employees who do not work in the same department of

Scott.

Solution:

Select * from employee

Where deptno not in (select deptno from employee where ename='Scott')

Output:

39

4. List departments (dept details) in which no employee is working (use nested)

Solution:

Select *from dept

Where deptno not in (select deptno from employee)

Output:

5. List Employees who are drawing the Salary more than the Average salary of

DEPTNO 20. Also ensure that the result should not contain the records of

DEPTNO 20

Solution:

Select * from emp where deptno! =20 and sal> (select avg (sal) from emp where

deptno=20 group by deptno)

Output:

6. List Employee names drawing Second Maximum Salary

Solution:

Select * from employee where sal = (select max (sal) from employee where

sal<(select max(sal) from employee))

40

Output:

7. List the Employee Names, Job & Salary for those employees who are drawing

minmum salaries for their department (Use Correlated)

Solution:

Select ename,job,sal

From employee e

Where sal= (select min(sal) from employee i where e.deptno=i.deptno)

Output:

8. List the highest paid employee for each department using correlated sub

query.

Solution:

Select * from employee e

Where Sal= (select max (sal) from employee i

Where e.deptno=i.deptno)

Output:

9. List Employees working for the same job type as of BLAKE and drawing more

than him (use Self Join)

Solution:

41

Select * from employee where job= (select job from employee where ename='blake')

and sal> (select sal from employee where ename='blake')

Output: