Oracle

January 6, 2017 | Author: pooja_choudhary_2 | Category: N/A
Share Embed Donate


Short Description

Download Oracle...

Description

A PROJECT FILE ON SQL QUERIES

SUBMITTED TO:

SUBMITTED BY:

TABLES USED IN THE QUERIES Emp545table EMP_ID FIRST_NAME LAST_NAME EMAIL SALARY COMM_PCT DEPT_ID MGR_ ID

PH_NO HIRE_DATE

JOB_ID

------------ --------- -------------- ------------- ---------- ------------- ------------100 24000

Steven 0

101 17000

Neena 0

Kochhar NKOCHHAR 515.123.4568 21-SEP-89 90 100

AD_VP

102 17000

Lex

De Haan LDEHAAN 90 100

515,123.4569 13-JAN-93

AD_VP

Alexander Hunold AHUNOLD 0 60 102

590.423.4567 03-JAN-90

IT_PROG

590.423.4568 21-MAY-91

IT_PROG

103 9000

0

King 90

SKING

BERNST 103

515.123.4567 17-JUN-87

AD_PRES

104 6000

Bruce 0

Ernst 60

107 4200 124 5800

Diana 0 Kevin 0

Lorentz DLORENTZ 590.423.5567 07-FEB-99 IT_PROG 60 103 Mourgos KMOURGOS 650.123.5234 16-NOV-99 ST_MAN 50 100

141 3500

Trenna 0

Rajs 50

TRAJS 124

650.121.8009 17-OCT-95 ST_CLERK

142 3100

Curtis 0

Davies 50

CDAVIES 124

650.121.1994 29-JAN-97 ST_CLERK

143 2600

Randall 0

Matos 50

RMATOS 124

650.123.5234 15-MAR-98ST_CLERK

Dept545 table DEPT_ID DEPT_NAME

MGR_ID LOC_ID

------------- ------------------ ---------- ----------10 Administration

200

1700

20 Marketing

201

1800

50 Shipping

124

1500

60 IT

103

1500

80

Sales

149

2500

90

Executive

100

1700

110 Accounting

205

1700

190 Contracting

0

1700

Job History EMP_ID

STRT_DAT END_DATE JOB_ID DEPT_ID

----------- --------- --------- --------------- ------------102

13-JAN-93

24-JUL-98

101

21-SEP-89

15-OCT-93

AC_ACCOUNT 110

101

28-OCT-93

15-MAR-97

AC_MGR

201

17-FEB-96

19-DEC-99 MK_REP

20

114

24-MAR-98

31-DEC-99

ST_CLERK

50

122

01-JAN-99

31-DEC-99 ST_CLERK

50

200

17-SEP-97

17-JUN-93

AD_ASST

90

176

24-MAR-98

31-DEC-98

SA_REP

80

176

01-JAN-99

31-DEC-99

SA_MAN

80

200

01-JUL-94

31-DEC-98 AC_ACCOUNT

Job grades GRA

LOWEST_SAL HIGHEST_SAL

---------- ---------- ----------- ------A

1000

2999

B

3000

5999

C

6000

9999

D

10000

14999

E

15000

24999

IT_PROG

60

110

90

F

25000

40000

Countries CO COUNTRY_NAME

REGION_ID

--- ----------------------------------- --------CA Canada

2

DE Germany

1

UK United Kingdom

1

US United States of America 2

Locations LOC_ID

STR_ADD

POST_CODE

CITY

STATE_PROV

CO

-------------------- ------------ ------------------------ ------------ ---------------- ------------1400 2014 Jabberwocky Rd 26192

Southlake

Texas

US

1500 2011 Interiors Blvd

99236 South San Francisco California

US

1700 2004 Charde Rd

98199

Washington

US

Seattle

1800 460 Bloor St.W.

ON M5S 1XB Toronto

Ontario

CA

2500 Magdalen Center

OX9 9ZB

Oxford

UK

Oxford

Chapter-1 Basic SQL Statements 1) Show the structure of the dept545 table. Select all data from the table. QUERY: SQL>describe dept545; Name

Null?

Type

---------------------------------------------------------------------------DEPT_ID

NUMBER(3)

DEPT_NAME

VARCHAR2(18)

MGR_ID

NUMBER(3)

LOC_ID

NUMBER(5)

SQL>select * from dept545; DEPT_ID

DEPT_NAME

MGR_ID

LOC_ID

------------- ------------------ ---------- -----------------------10

Administration

200

1700

20

Marketing

201

1800

50

Shipping

124

1500

60

IT

103

1500

80

Sales

149

2500

90

Executive

100

1700

110

Accounting

205

1700

190

Contracting

0

1700

8 rows selected.

2) Show the structure of emp545 table. Create a query to display the last name, job code, hire date and employee number for each employee with employee with employee number appearing first. Provide an alias STARTDATE for the HIRE_DATE column. QUERY: SQL>describe emp545; Name

Null?

Type

------------------------------- -------- ---EMP_ID

NUMBER(3)

FIRST_NAME

VARCHAR2(18)

LAST_NAME

VARCHAR2(18)

EMAIL

VARCHAR2(15)

PH_NO

NUMBER(20)

HIRE_DATE

DATE

JOB_ID

VARCHAR2(12)

SALARY

NUMBER(10)

COMM_PCT

NUMBER(3)

DEPT_ID

NUMBER(4)

SQL>select emp_id, last_name, job_id, hire_date as "StartDate" from emp545; EMP_ID

LAST_NAME

JOB_ID

StartDate

----------- ------------------ ------------ --------100

King

AD_PRES

17-JUN-87

101

Kochhar

AD_VP

21-SEP-89

102

De Haan

AD_VP

13-JAN-93

103

Hunold

IT_PROG

03-JAN-90

104

Ernst

IT_PROG

21-MAY-91

107

Lorentz

IT_PROG

07-FEB-99

124

Mourgos

ST_MAN

16-NOV-99

141

Rajs

ST_CLERK

17-OCT-95

142

Davies

ST_CLERK

29-JAN-97

143

Matos

ST_CLERK

15-MAR-98

10 rows selected.

3) Create a query to display the employee number, last name, job ID and hire date from emp545 table. QUERY: SQL> select emp_id, last_name, job_id,hire_date from emp545; EMP_ID

LAST_NAME

JOB_ID

HIRE_DATE

----------- ------------------ ------------ ----------------------------------100

King

AD_PRES

17-JUN-87

101

Kochhar

AD_VP

21-SEP-89

102

De Haan

AD_VP

13-JAN-93

103

Hunold

IT_PROG

03-JAN-90

104

Ernst

IT_PROG

21-MAY-91

107

Lorentz

IT_PROG

07-FEB-99

124

Mourgos

ST_MAN

16-NOV-99

141

Rajs

ST_CLERK

17-OCT-95

142

Davies

ST_CLERK

29-JAN-97

143 Matos 10 rows selected.

ST_CLERK

15-MAR-98

4) Create a query to display unique job codes from the EMP545 table. QUERY: SQL>select distinct job_id from emp545; JOB_ID -----------AD_PRES AD_VP IT_PROG ST_CLERK ST_MAN

5) Copy the statement from 8th question. Name the headings Emp #, Employee, Job and hire date. Run your query. QUERY: SQL>select emp_id as "Emp #", last_name as "Employee", job_id as "Job",hire_date as "Hire Date” from emp545; Emp #

Employee

Job

Hire Date

-------- ------------------ ------------ -----------------100

King

AD_PRES

17-JUN-87

101

Kochhar

AD_VP

21-SEP-89

102

De Haan

AD_VP

13-JAN-93

103

Hunold

IT_PROG

03-JAN-90

104

Ernst

IT_PROG

21-MAY-91

107

Lorentz

IT_PROG

07-FEB-99

124

Mourgos

ST_MAN

16-NOV-99

141

Rajs

ST_CLERK 17-OCT-95

142

Davies

ST_CLERK

29-JAN-97

143

Matos

ST_CLERK

15-MAR-98

10 rows selected.

6) Display the last name concatenated with job ID, separated by a comma and space and name the column Employee and Title. QUERY: SQL>select last_name||' ,'||job_id "Employee and Title" from emp545;

Employee and Title ------------------------------King, AD_PRES Kochhar, AD_VP De Haan, AD_VP Hunold, IT_PROG Ernst, IT_PROG Lorentz, IT_PROG Mourgos, ST_MAN Rajs, ST_CLERK Davies, ST_CLERK

Matos, ST_CLERK 10 rows selected.

7) Create a query to display all the data from the EMP545 table. Separate each column by a comma. Name the column THE_OUTPUT. QUERY: SQL>select emp_id ||','|| first_name ||','|| last_name ||','|| email ||','||ph_no||','||','|| job_id ||','|| hire_date||','|| salary ||','|| comm_pct ||','||dept_id THE_OUTPUT from emp545; THE_OUTPUT --------------------------------------------------------------------------------------100,Steven, King,SKING,-4175,,AD_PRES,17-JUN-87,24000,0,90 101,Neena,Kochhar,NKOCHHAR,-4176,,AD_VP,21-SEP-89,17000,0,90 102,Lex,De Haan,LDEHAAN,-4177,,AD_VP,13-JAN-93,17000,0,90 103,Alexander,Hunold,AHUNOLD,-4400,,IT_PROG,03-JAN-90,9000,0,60 104,Bruce,Ernst,BERNST,-4401,,IT_PROG,21-MAY-91,6000,0,60 107,Diana,Lorentz,DLORENTZ,-5400,,IT_PROG,07-FEB-99,4200,0,60 124,Kevin,Mourgos,KMOURGOS,-4707,,ST_MAN,16-NOV-99,5800,0,50 141,Trenna,Rajs,TRAJS,-7480,,ST_CLERK,17-OCT-95,3500,0,50 142,Curtis,Davies,CDAVIES,-2465,,ST_CLERK,29-JAN-97,3100,0,50 143,Randall,Matos,RMATOS,-2345,,ST_CLERK,15-MAR-98,2600,0,50 10 rows selected.

Chapter-2 Restricting and Sorting Data 1)Create a query to display the last name and salary of emp545 earning more than $12,000.Place your SQL statement in a text file named. QUERY: SQL>select last_name,salary from emp545 where salary > 12000; LAST_NAME ------------------

SALARY ---------

King

24000

Kochhar

17000

De Haan

17000

2) Create a query to display the employee last name and department number for employee number 176. QUERY: SQL>select last_name, dept_id from emp545 where emp_id=176; no rows selected

3 Create a query to display the last name and salary for all emp545 whose salary is not in the range of $5,000b and $12,000.Run your SQL statement. QUERY: SQL>select last_name, salary from emp545 where salary not between 5000 and 12000; LAST_NAME

SALARY

------------------

---------

King

24000

Kochhar

17000

De Haan

17000

Lorentz

4200

Rajs

3500

Davies

3100

Matos

2600

7 rows selected.

4) Display the last name,job ID,and start date of emp545 hired between February 20,1998 and May 1,1998.order the query in ascending order by start date. QUERY: SQL>select last_name, job_id, hire_date from emp545 where hire_date between '20-feb-98' and '1-may-98' order by hire_date; LAST_NAME

JOB_ID

HIRE_DATE

------------------

------------ ---------

Matos

ST_CLERK

15-MAR-98

5) Display the last name and department number of all emp545 in department 20 and 50 in alphabetical order by name. QUERY: SQL>select last_name, dept_id from emp545 where dept_id in (20,50) order by last_name; LAST_NAME

DEPT_ID

------------------ ------------Davies Matos

50 50

Mourgos

50

Rajs

50

6) Create a query to list the last name and salary of emp545 who earn between $5,000 and $12,000 and are in department 20 or 50.Label the columns employee and monthly salary. QUERY: SQL>select last_name as "employee", salary as "monthly salary" from emp545 where salary between5000 and 12000 and dept_id in (20,50); employee

monthly salary

-----------------Mourgos

-------------5800

7) Display the last name and hire date of every employee who was hired in 1994. QUERY: SQL>select last_name, hire_date from emp545 where hire_date like '%94'; no rows selected

8) Display the last name and job title of all emp545 who do not have a manager. QUERY: SQL> select last_name, job_id from emp545 where mgr_id is null; LAST_NAME

JOB_ID

------------------ -----------King

AD_PRES

Kochhar

AD_VP

De Haan

AD_VP

Hunold

IT_PROG

Ernst

IT_PROG

Lorentz

IT_PROG

Mourgos

ST_MAN

Rajs

ST_CLERK

Davies

ST_CLERK

Matos

ST_CLERK

10 rows selected.

9) Display the last name, salary and commission for all emp545 who earn commissions. Sort data in descending order of salary and commissions. QUERY: SQL>select last_name, salary, comm_pct from emp545 where comm_pct is not null order by salary desc,comm_pct desc; LAST_NAME

SALARY COMM_PCT

------------------ --------King

24000

-------------0

Kochhar

17000

0

De Haan

17000

0

Hunold

9000

0

Ernst

6000

0

Mourgos

5800

0

Lorentz

4200

0

Rajs

3500

0

Davies

3100

0

Matos

2600

0

10 rows selected.

10) Display the last names of all emp545 where the third letter of the name is an a. QUERY: SQL>select last_name from emp545 where last_name like '__a'; no rows selected

11) Display the last name of all emp545 who have an a and e in their last name. QUERY: SQL>select last_name from emp545 where last_name like '%a%' and last_name like '%e%'; LAST_NAME -----------------De Haan Davies

12) Display the last name, job and salary for all emp545 whose job is sales representative or stock clerk and whose salary is not equal to $2,500,$3,500 or $7,000. QUERY: SQL>select last_name, job_id, salary from emp545 where job_id in ('SA_REP','ST_CLERK') and salary not in (2500,3500,7000); LAST_NAME

JOB_ID

SALARY

------------------ ------------ -------- ----------------Davies

ST_CLERK

3100

Matos

ST_CLERK

2600

13) Create a query to display the last name, salary and commission for all emp545 whose commission amount is 20%. QUERY: SQL>select last_name as "EMPLOYEE", salary as "MONTHLY SALARY",comm_pct from emp545 where commission_pct = .20; no rows selected

Chapter-3 Single Row Functions 1)Write a query to display the current date.Label the column Date. QUERY: SQL>select sysdate as "Date" from dual; Date --------13-JUL-08

2)For each employee, display the employee number,last_name,salary and salary increased by 15% and expressed as a whole number. Label the column new salary. QUERY: SQL>select emp_id, last_name, salary, round (salary*1.15, 0) "New Salary" from emp545; EMP_ID

LAST_NAME SALARY New Salary

----------- ------------------ --------- ---------100

King

24000

27600

101

Kochhar

17000

19550

102

De Haan

17000

19550

103

Hunold

9000

10350

104

Ernst

6000

6900

107

Lorentz

4200

4830

124

Mourgos

5800

6670

141

Rajs

3500

4025

142

Davies

3100

3565

143

Matos

2600

2990

10 rows selected.

3)Run your query as in the last question. QUERY: SQL>select emp_id,last_name,salary,round(salary*1.15,0) "New Salary" from emp545; EMP_ID LAST_NAME SALARY New Salary ----------- ------------------ --------- ---------100

King

24000

27600

101

Kochhar

17000

19550

102

De Haan

17000

19550

103

Hunold

9000

10350

104

Ernst

6000

6900

107

Lorentz

4200

4830

124

Mourgos

5800

6670

141

Rajs

3500

4025

142 Davies

3100

3565

143 Matos

2600

2990

10 rows selected.

4) Modify your query.Add a column that subtracts the old salary from the new salary.Label the column Increase.

QUERY: SQL>select emp_id, last_name, salary, round(salary*1.15 , 0) "New Salary", round (salary*1.15 , 0)-salary "Increase" from emp545; EMP_ID LAST_NAME SALARY New Salary Increase ----------- ------------------ --------- ---------- ------------------------100

King

24000

27600

3600

101

Kochhar

17000

19550

2550

102

De Haan

17000

19550

2550

103

Hunold

9000

10350

1350

104

Ernst

6000

6900

900

107

Lorentz

4200

4830

630

124

Mourgos

5800

6670

870

141

Rajs

3500

4025

525

142

Davies

3100

3565

465

143

Matos

2600

2990

390

10 rows selected.

5) Write a query that displays the employee’s last names with the first letter capitalized and all other letters lowercase and the length of all employees whose name starts with J,A or M.Give each column an appropriate label. Sort the results by the employees last names. QUERY: SQL>select initcap(last_name) "Name”, length(last_name) "Length" from emp545 where last_name like 'J%' or last_name like 'M%' or last_name like 'A%'

order by last_name; Name Length ------------------ --------Matos

5

Mourgos

7

6)For each employee, display the employee’s last name, and calculate the months between today and the date the employee was hired. Label the column MONTHS_WORKED. Order your results by the number of months employed. Record the number of months up to the closest whole number. QUERY: SQL>select last_name, round(months_between (sysdate ,hire_date)) Months_Worked from emp545 order by months_between(sysdate,hire_date); LAST_NAME

MONTHS_WORKED

------------------ ------------Mourgos

-1096

Lorentz

-1087

Matos

-1076

Davies

-1063

Rajs

-1047

De Haan

-1014

Ernst

-994

Hunold

-978

Kochhar

-974

King

-947

10 rows selected.

7) Write a query that produces the following for each employee earns monthly but wants .Label the column Dream Salaries. QUERY: SQL>select last_name || 'earns'|| to_char(salary,'fm$99,999.00')|| 'monthly but wants'|| to_char(salary*3,'fm$99,999.00')||'.' "Dream Salaries" from emp545; Dream Salaries -----------------------------------------------------Kingearns$24,000.00monthly but wants$72,000.00. Kochharearns$17,000.00monthly but wants$51,000.00. De Haanearns$17,000.00monthly but wants$51,000.00. Hunoldearns$9,000.00monthly but wants$27,000.00. Ernstearns$6,000.00monthly but wants$18,000.00. Lorentzearns$4,200.00monthly but wants$12,600.00. Mourgosearns$5,800.00monthly but wants$17,400.00. Rajsearns$3,500.00monthly but wants$10,500.00. Daviesearns$3,100.00monthly but wants$9,300.00. Matosearns$2,600.00monthly but wants$7,800.00. 10 rows selected.

8)Create a query to display the last name and salary for all emp545.Format the salary to be 15 characters long,left padded with $.Label the column SALARY. QUERY: SQL> select last_name,lpad(salary,15,'$') SALARY from emp545;

LAST_NAME

SALARY

------------------ --------------King

$$$$$$$$$$24000

Kochhar

$$$$$$$$$$17000

De Haan

$$$$$$$$$$17000

Hunold

$$$$$$$$$$$9000

Ernst

$$$$$$$$$$$6000

Lorentz

$$$$$$$$$$$4200

Mourgos

$$$$$$$$$$$5800

Rajs

$$$$$$$$$$$3500

Davies

$$$$$$$$$$$3100

Matos

$$$$$$$$$$$2600

10 rows selected.

9) Display each employee’s last name; hire date and salary review date, which is the first Monday after six months of service. Label the column REVIEW. Format the dates to appear in the format similar to “Monday, the Thirty-First of July, 2000”. QUERY: SQL> select last_name,hire_date,to_char(hire_date,'day') day from emp545 order by to_char(hire_date-1,'d'); LAST_NAME

HIRE_DATE

DAY

------------------ --------- ---------- --------Ernst

21-MAY-91

monday

Mourgos

16-NOV-99

monday

Rajs

17-OCT-95

monday

King

17-JUN-87

tuesday

De Haan

13-JAN-93

tuesday

Davies

29-JAN-97

tuesday

Hunold

03-JAN-90

tuesday

Kochhar

21-SEP-89

wednesday

Lorentz

07-FEB-99

saturday

15-MAR-98

saturday

Matos 10 rows selected.

10) Create a query that displays the employees’ last names and commission amounts. If any employee does not earn commission, put “no commission”. Label the column COMM. QUERY: SQL> select last_name,nvl(to_char(commission_pct),'no commission') comm from emp545; LAST_NAME

COMM

------------------ ---------------------------------King

no commission

Kochhar

no commission

De Haan

no commission

Hunold

no commission

Ernst

no commission

Lorentz

no commission

Mourgos

no commission

Rajs

no commission

Davies

no commission

Matos

no commission

10 rows selected.

11) Create a query that displays the employees’ last names and indicates the amounts of their annual salaries with asterisk.Each asterisk signifies thousand dollars.Sort the data in descending order of salary. Label the column EMPOYEES_AND_THEIR _SALARIES. QUERY: SQL> select rpad (last_name, 8) ||''|| rpad (' ', salary/1000+1, '*') employees_and_their_salaries from emp545 order by salary desc;

EMPLOYEES_AND_THEIR_SALARIES -------------------------------------------King ************************ Kochhar ***************** De Haan ***************** Hunold ********* Ernst ****** Mourgos ***** Lorentz **** Rajs *** Davies ***

Matos ** 10 rows selected.

12) Using decode function,write a query that displays the grade of all employee based on the value of the column JOB_ID,as per the foll. Data Job

Grade

AD_PRES ST_MAN IT_PROG SA_REP ST_CLERK None of above

A B C D E 0

QUERY: SQL> select job_id,decode (job_id,'ST_CLERK','E','sa_rep','D','IT_PROG','C','ST_MAN','B','ad_pres','A','0') grade from emp545; JOB_ID

G

------------ ------------AD_PRES

A

AD_VP

0

AD_VP

0

IT_PROG

C

IT_PROG

C

IT_PROG

C

ST_MAN

B

ST_CLERK

E

ST_CLERK

E

ST_CLERK

E

10 rows selected.

Chapter-4 Displaying Data from Multiple Tables 1)Write a query to display the last name,department number,and department name for all employees. QUERY: SQL> select e.last_name, e.dept_id, d.dept_name from emp545 e, dept545 d where e.dept_id=d.dept_id; LAST_NAME

DEPT_ID

DEPT_NAME

------------------ --

----------- ---------------------------------------

Mourgos

50

Shipping

Rajs

50

Shipping

Davies

50

Shipping

Matos

50

Shipping

Hunold

60

IT

Ernst

60

IT

Lorentz

60

IT

King

90

Kochhar De Haan 10 rows selected.

90 90

Executive Executive Executive

2)Create a unique listing of all jobs that are in department 80.Include the location of the department in the output. QUERY: SQL> select DISTINCT job_id,loc_id from emp545,dept545 where emp545.dept_id=dept545.dept_id and emp545.dept_id=80; no rows selected

3)Write a query to display the employees, last_name department_ name,location_id and city of all employees who earn a commission. QUERY: SQL> select e.last_name, d.dept_name, d.loc_id, l.city from emp545 e, dept545 d, Loc545 l where e.dept_id=d.dept_id and d.loc_id=l.loc_id and e.comm_pct is not null;

LAST_NAME

DEPT_NAME

LOC_ID CITY

------------------ ------------------ ----------- ---------------------------Mourgos

Shipping

1500 South San Francisco

Rajs

Shipping

1500 South San Francisco

Davies

Shipping

1500 South San Francisco

Matos

Shipping

1500 South San Francisco

Hunold

IT

1500 South San Francisco

Ernst

IT

1500 South San Francisco

Lorentz

IT

1500 South San Francisco

King

Executive

1700 Seattle

Kochhar

Executive

1700 Seattle

De Haan

Executive

1700 Seattle

10 rows selected.

4) Display the employee last_name and department name for all the employes who have an a(lowercase) in their last names. QUERY: SQL> select last_name,dept_name from emp545,dept545 where emp545.dept_id=dept545.dept_id and last_name like'%a%';

LAST_NAME

DEPT_NAME

------------------ -----------------Rajs

Shipping

Davies

Shipping

Matos

Shipping

Kochhar

Executive

De Haan

Executive

5.Create a query to display the name and hire_date of any employee hired after Davies. QUERY: SQL>Select e.last_name, e.hire_date from emp545 e, emp545 d where d .last_name = “Davies” and d.hire_date < e.hire_date ;

LAST_NAME ---------------Matos “ 8 row selected

HIRE_DATE ---------------15-mar-98

6. Display the names and hire dates for all employees who hired before their managers, along with their manager’s names and hire dates. QUERY: SQL>Select e.last_name, e.hire_date, a.last_name, a.hire_date from emp545 e, emp545 a where e.mgr_id=a.mgr_id and e.hire_date < a.hire_date; LAST_NAME

HIRE_DATE

LAST_NAME

Hunold Rajs Davies Matos

03-jan-90 17-oct-95 29-jan-97 15-mar-98

De Haan Mourgos Mougos Mourgos

HIRE_DATE 13-jan-93 16-nov-99 16-nov-99 16-nov-99

Chapter-5 Aggregating Data Using Group Functions 1) Display the highest, lowest, sum, and salary of all the employees. Label the columns maximum, minimum, sum and average. Round your results to the nearest whole number QUERY: SQL> select round(max(salary),0) "Maximum",round(min(salary),0) "Minimum",round(sum(salary),0) “Sum”,round(avg(salary),0) "Average" from emp545; Maximum Minimum

Sum Average

--------- --------- --------- --------- ------------------24000

2600

92200

9220

2) Display the minimum,maximum,sum and average salary for each job type.

QUERY: SQL> select job_id,round(max(salary),0) "Maximum",round(min(salary),0) "Minimum",round(sum(salary,0) "Sum",round(avg(salary),0) "Average" from emp545 group by job_id; JOB_ID Maximum Minimum Sum Average ------------ --------- --------- --------- --------- --------AD_PRES

24000

24000

24000

24000

AD_VP

17000

17000

34000

17000

IT_PROG

9000

4200

19200

6400

ST_CLERK ST_MAN

3500 5800

2600 5800

9200 5800

3067 5800

3) Write a query to display the number of people with the same job.

QUERY: SQL> select job_id, count (*) from emp545 group by job_id;

JOB_ID

COUNT (*)

------------ --------AD_PRES

1

AD_VP

2

IT_PROG

3

ST_CLERK

3

ST_MAN

1

4) Determine the number of managers without listing them. Label the column

Number of Managers. QUERY: SQL> select count (distinct mgr_id) "Number of Managers" from emp545; Number of Managers -----------------8 5) Write a query that display the difference between the highest and lowest

salaries.Label the column DIFFERENCE.

QUERY: SQL> select max(salary)-min(salary) DIFFERENCE from emp545; DIFFERENCE ---------21400 6) Display the manager number and salary of the lowest paid employee for the

manager. Exclude anyone whose manager is not known. Exclude any groups where the minimum salary is $6,000 or less. Sort the output in descending order of salary. QUERY: SQL> select mgr_id, min(salary) from emp545 where mgr_id is not null group by mgr_id having min(salary)>6000 order by min(salary) desc; no rows selected 7) write a query to display each department’s name, location, number of

employees, and average salary for the employees in that department. Label the column Name, Location, Number of people and salary. Round the average salary to two decimal places. QUERY: SQL> select d.dept_name "Name",d.loc_id "Location",count(*) "Number of people",round(avg(salary),2) "Salary" from emp545 e,dept545 d where e.dept_id=d.dept_id group by d.dept_name,d.loc_id;

Name

Location

Number of people

Salary

------------------ --------- ---------------- --------Executive

1700

3

19333.33

IT

1500

3

6400

Shipping

1500

4

3750

8) Create a query that display the total number of employees and,of that

total,the number of employees hired in 1995,1996,1997 and 1998.Create appropriate column heading. QUERY: SQL> select count(*) total,sum(decode(to_char(hire_date,'yyyy'),1995,1,0))"1995", sum(decode(to_char(hire_date,'yyyy'),1996,1,0)) "1996", sum(decode(to_char(hire_date,'yyyy'),1997,1,0)) "1997", sum(decode(to_char(hire_date,'yyyy'),1998,1,0)) "1998" from emp545;

TOTAL

1995

1996

1997

1998

--------- --------- --------- --------- --------18

0

0

0

0

9) Create a matrix query to display the job,the salary for that job based on

department number and the total salary for that job,for departments 20,50,80 and 90 giving each column an appropriate heading. QUERY: SQL> select job_id "Job", sum(decode(dept_id,20,salary)) "Dept 20", sum(decode(dept_id,50,salary)) "Dept 50", sum(decode(dept_id,80,salary)) "Dept 80", sum(decode(dept_id,90,salary)) "Dept 90", sum(salary) "Total" from emp545 group by job_id;

Job

Dept 20 Dept 50 Dept 80 Dept 90

------------ --------- --------- --------- --------- ---------

Total

AD_PRES

24000

24000

AD_VP

34000

34000

IT_PROG

19200

ST_CLERK

9200

9200

ST_MAN

5800

5800

6 rows selected.

Chapter-6 Subqueries 1) Write a query to display the last name and hire date of any employee in the

same department as Zlotkey.Excude Zlotkey. QUERY: SQL> select last_name,hire_date from emp545 where dept_id=(select dept_id from emp545 where last_name='Zlotkey') and last_name'Zlotkey'; no rows selected

2) Create a query to display the employee numbers and last names of all the

employees who earn more than the average salary. Sort the results in ascending order of salary. QUERY: SQL> select emp_id,last_name from emp545 where salary>(select avg(salary) from emp545 ) order by salary;

EMP_ID

LAST_NAME

----------- -----------------101 Kochhar 102 De Haan 100 King 3) Write a query that displays the employee numbers and last names of all

employees who work in a department with any employee whose last name contains a u. QUERY: SQL> select emp_id,last_name from emp545 where dept_id in (select dept_id from emp545 where last_name like '%u%'); EMP_ID LAST_NAME ----------- -----------------124 Mourgos 141 Rajs 142 Davies 143 Matos 103 Hunold 104 Ernst 107 Lorentz 7 rows selected. 4) Display the last name,department number and job ID of all employees

department location ID is 1700. QUERY: SQL> select last_name,dept_id,job_id from emp545 where dept_id in (select dept_id from dept545 where location_id=1700);

LAST_NAME

DEPT_ID JOB_ID

------------------ ------------- -----------King

90 AD_PRES

Kochhar

90 AD_VP

De Haan

90 AD_VP

5) Display the last name and salary of every employee who reports to King.

QUERY: SQL> select last_name,salary from emp545 where mgr_id=(select emp_id from emp545 where last_name='KING'); no rows selected 6) Display the department number,last name and the job ID for the every

employee in the Executive department. QUERY: SQL> select dept_id, last_name, job_id from emp545 where dept_id in (select dept_id from dept545 where dept_name='Executive'); DEPT_ID LAST_NAME

JOB_ID

------------- ------------------ -----------90

King

90 Kochhar 90 De Haan

AD_PRES AD_VP AD_VP

7) Display the employee numbers,last names and salaries of all employees who

earn more than average salary and who work in a department with any employee with a u in their name. QUERY:

SQL> select emp_id,last_name,salary from emp545 where dept_id in (select dept_id from emp545 where last_name like '%u%') and salary > (select avg(salary) from emp545); no rows selected

Chapter-7 Producing Readable Output with iSQL*Plus 1) Write a script to display the employee last name,job,and hire date for all employees who started between a given range. Concatenate the name and job together, separated by a space and comma, and labels the column Employees. In a separate SQL script file, use the DEFINE command to provide the two ranges. Use the format MM/DD/YYYY. QUERY: SQL> set echo off set verify off define low_date = 01/01/1998 define high_date = 01/01/1999 Select last _name ||’,’|| job_id EMPLOYEES,hire_date from emp545 where hire_date between To_date(‘&low_date’,’MM/DD/YYYY’) and to_date(‘&high_date’,’MM/DD/YYYY’) / Undefined low_date undefined high_date set verify on set echo on EMPLOYEES -------------------Matos,ST_CLERK

HIRE_DATE ----------------------15-MAR-98

2) Write a script to display the employee last name,job,and department name for a given location. The search condition should allow for case-insensitive searches of the department location. QUERY: SQL>set echo off set verify off column last_name HEADING “DEPARTMENT” Select e.last_name,e.job_id,d.dept_name from emp545,dept545,loc545 where

e.dept_id=d.dept_id and l.loc_id=d.loc_id and l.city=initcap(‘&p_loc’ / Column last_name clear column dept_name clear set verify on set echo on

EMP_NAME

JOB_ID

DEPT_NAME

----------------------------------------------------------------------------King

AD_PRES

Executive

Kochhar

AD_VP

Executive

De Haan

AD_VP

Executive

3) Create a query to report containing the dept name, employee last name, hire date, salary, and annual salary for each employee in a given location. Label the columns DNAME, ENAME, STRT DATE, SALARY, and ANN SALARY placing the labels on multiple lines. QUERY: SQL>set echo off set feedback off set verify break on dept_name column dept_name heading “DNAME” column last_name heading “ENAME” column hire_date heading “SALARY” FORMAT $99,990.00 column asal heading “ANN SALARY” format $99,990.00 Select d.dept_name,e.last_name,e.hire_date,e.salary,e.salary*12 asal from dept545 d,emp545 e, loc545 l where e.dept_id=d.dept_id and d.loc545_id=l.loc545_id and l.city =’&p_loc’ order by d.dept_name / column dept_name clear column last_name clear column hire_date clear column salary clear break

Set verify on set feedback on set echo on DNAME

ENAME

STRT DATE

SALARY

ANN SALARY

-------------------------------------------------------------------------------------------Administration Whalen 17-SEP-87 $4,400.00 $52,800.00 Executive

King

17-JUN-87 $24,000.00 $2880, 000.00

Kochhar 21-SEP-89 $17,000.00

$204,000.00

De Haan 13-JAN-93 $17,000.00

$204,000.00

Chapter-8 Manipulating Data 1) Create a query to build a table MY_EMPLOYEE table that will be used for the lab. QUERY: SQL> create table my_employee (id number(4) constraint emp_id_nn not null, last_name varchar2(25),first_name varchar2(25),user_id varchar2(8),salary number(9,2)); Table created.

2) Describe the structure of the MY_EMPLOYEE table to identify the column names QUERY: SQL> desc my_employee; Name

Null?

Type

------------------------------- -------- --------------

ID

NOT NULL

NUMBER(4)

LAST_NAME

VARCHAR2(25)

FIRST_NAME

VARCHAR2(25)

USER_ID

VARCHAR2(8)

SALARY

NUMBER(9,2)

3) Add the row of data to MY_EMPLOYEE table .Do not list the columns in the INSERT clause. QUERY: SQL> insert into my_employee values (1,'patel','ralph','rpatel', 895); 1 row created.

4) Populate the MY_EMPLOYEE table with the second row of sample data from the preceding list .List the columns in the insert clause. QUERY: SQL> insert into my_employee (id, last_name, first_name, user_id, salary) values (2,'dancs','betty','bdancs',860); 1 row created.

5) Confirm your addition to the table. QUERY: SQL> select * from my_employee; ID LAST_NAME

FIRST_NAME

USER_ID

SALARY

--------- ------------------------- ------------------------- -------- --------1 patel

ralph

rpatel

895

2 dancs

betty

bdancs

860

6 )Write an insert statement in a text file named loademp.sql to load rows into the my_employee table. Concatenate the first letter of the first name and first seven characters of the last name to produce the user_id? QUERY: SQL> set echo off SQL> set verify off SQL> insert into my_employee values (&p_id,'&p_last_name','&p_first_name', lower (substr('&p_first_name',1,1)|| substr('&p_last_name',1,7)),&p_salary); Enter value for p_id: 1 Enter value for p_last_name: patel Enter value for p_first_name: ralph Enter value for p_first_name: patel Enter value for p_last_name: patel Enter value for p_salary: 865 1 row created. ID LAST_NAME FIRST_NAME USERID SALARY ---- ------------------- ---- -------- ------ --------- -----------1 patel ralph rpatel 865

7) Populate the table with the last row of sample data by modifying the statements in the script you created? QUERY: SQL> insert into my_employee values (&p_id,'&p_last_name','&p_first_name', lower (substr('&p_first_name',1,1)|| substr('&p_last_name',1,7)),&p_salary); Enter value for p_id: 1 Enter value for p_last_name: dancs Enter value for p_first_name: betty Enter value for p_first_name: betty

Enter value for p_last_name: dancs Enter value for p_salary: 860 1 row created. ID LAST_NAME FIRST_NAME USERID SALARY --------------------------- -------------------- ----- ---------- -------- ---------------2 dancs betty bdancs 860 3 biri ben bbiri 1100 4 newman chad cnewman 750

8) Confirm your additions to the table? QUERY: SQL> select * from my_employee; ID LAST_NAME FIRST_NAME USERID SALARY ------ ------------------------- ---------- ---- ---- --------- ---------1 patel ralph rpatel 865 2 dancs betty bdancs 860 3 biri ben bbiri 1100 4 newman chad cnewman 750

9) Make the data additions permanent. QUERY: SQL> commit; Commit complete.

10) Change the last name of the employee 3 to drexler? And verify it. QUERY: SQL> update my_employee 2 set last_name= 'drexler' 3 where id= 3; 1 row updated. SQL> select * from my_employee;

ID LAST_NAME FIRST_NAME USERID SALARY ---------- --------- ------------- ---------- -------- ---------1 patel ralph rpatel 865 2 dancs betty bdancs 860 3 drexler ben bbiri 1100 4 newman chad cnewman 750

11) Change the salary to 1000 for all the employees whose salary is less than 900 and verify it. QUERY: SQL> update my_employee set salary=1000 where salary select * from my_employee; ID LAST_NAME FIRST_NAME USERID SALARY ---------- ------------------------- ----- - ---- ----- --- ---------1 patel ralph rpatel 1000 2 dancs betty bdancs 1000 3 drexler ben bbiri 1100 4 newman chad cnewman 1000

12)Verify your changes to the table? QUERY: SQL> select * from my_employee; ID LAST_NAME FIRST_NAME USERID SALARY ---------- ------------------------- ----- - ---- ----- --- ---------1 patel ralph rpatel 1000 2 dancs betty bdancs 1000 3 drexler ben bbiri 1100 4 newman chad cnewman 1000

13) Delete betty_dancs from my_employee table? QUERY: SQL> delete from my_employee where last_name='dancs'; 1 row deleted . SQL> select * from my_employee; ID LAST_NAME _FIRST_NAME ---------- ------------------------- ----- 1 patel ralph 3 drexler ben 4 newman chad

USERID SALARY ---- ----- --- ---------rpatel 1000 bbiri 1100 cnewman 1000

14) Confirm your changes to your table? QUERY: SQL> select * from my_employee; ID LAST_NAME _FIRST_NAME USERID SALARY ---------- ------------------------- ----- - ---- ----- --- ---------1 patel ralph rpatel 1000 3 drexler ben bbiri 1100 4 newman chad cnewman 1000

15) Commit all pending changes? QUERY: SQL> commit; Commit complete

16) Populate the table with the last row of sample data by modifying the statements in the script you created ? QUERY:

SQL> set echo off SQL> set verify off SQL> insert into my_employee values (&p_id,'&p_last_name','&p_first_name',lower (substr('&p_first_name',1,1)|| substr('&p_last_name',1,7)),&p_salary); Enter value for p_id: 1 Enter value for p_last_name: dancs Enter value for p_first_name: betty Enter value for p_first_name: betty Enter value for p_last_name: dancs Enter value for p_salary: 865 1 row created. ID LAST_NAME FIRST_NAME USERID SALARY ---- ------------------- ---- -------- ------ --------- -----2 dancs betty bdancs 1000

17)Confirm your additions to your table? QUERY: SQL> select * from my_employee; ID LAST_NAME FIRST_NAME USERID SALARY ---------- ------------------------- ----- - ---- ----- --- ---------1 patel ralph rpatel 1000 2 dancs betty bdancs 1000 3 drexler ben bbiri 1100 4 newman chad cnewman 1000

18) Mark the intermediate point in the processing of the transaction? QUERY: SQL> savepoint step_18; Savepoint created.

19) Empty the entire table?

QUERY: SQL> delete from my_employee; 4 rows deleted.

20) Confirm that the table is empty? QUERY: SQL> select * from my_employee; no rows selected

21)Discard the most recent delete operation without discarding the earlier insert operation? QUERY: SQL>rollback to step_18; Rollback complete.

22) Confirm that the new row is still intact? QUERY: SQL> select * from my_employee; ID LAST_NAME FIRST_NAME USERID SALARY ---------- ------------------------- ----- - ---- ----- --- ---------1 patel ralph rpatel 1000 2 dancs betty bdancs 1000 3 drexler ben bbiri 1100 4 newman chad cnewman 1000

23 )Make the data additions permanent? QUERY:

SQL> commit; Commit complete

Chapter-9 Creating and Managing Tables 1) Create the dept table based on the following table instance chart then executes the statement in the script to create the table. QUERY: SQL> create table dept( id number(7), name varchar2(25)); Table created. SQL> desc dept; Name -------------------------------------ID NAME

Null? Type -------- ------------------------NUMBER(7) VARCHAR2(25)

2) Populate the dept table with data from the departments table. Include only columns that you need. QUERY: SQL> insert into dept select dept_id,dept_name from dept545; 7 rows created. SQL> select * from dept; ID -----10 20

NAME ------------------------Administration Marketing

50 60 80 90 110 190

Shipping IT Sales Executive Accounting Contracting

7 rows selected.

3) Create emp table based on the following table instance chart and then execute the statement in the script to create table QUERY: SQL> create table emp (id number(7),last_name varchar2(25),first_name varchar2(25),dept_id number(7)); Table created. SQL> desc emp; Name

Null?

Type

------------------------------- -------- ---ID

NUMBER(5)

LAST_NAME

VARCHAR2(25)

FIRST_NAME

VARCHAR2(25)

DEPT_ID

NUMBER(7)

4) Modify the emp table to allow for longer employee last names. Confirm your modification. QUERY: SQL> alter table emp modify(last_name varchar2(50)); Table altered. SQL> desc emp;

Name

Null?

Type

------------------------------- -------- ---ID LAST_NAME

NUMBER(7) VARCHAR2(50)

FIRST_NAME

VARCHAR2(25)

DEPT_ID

NUMBER(7)

5) Confirm that the dept and emp tables are stored in the data dictionary. QUERY: SQL> select table_name from user_tables where table_name in ('DEPT','EMP'); TABLE_NAME -----------------------------DEPT EMP

6) Create the employees2 table based on the structure of employees table. Include only the employee_id , first_name , last_name , salary , and dept_id columns. Name the columns in your new table id , first_name, last_name , salary , and dept_id, respectively. QUERY: SQL> create table employee2 AS select emp_id "id",first_name,last_name "last_name", salary,dept_id from emp 545; Table created.

7) Drop the emp table. QUERY:

SQL> drop table emp; Table dropped.

8) Rename the employees2 table as emp. QUERY: SQL> rename employee2 to emp; Table renamed.

9) Add a comment to the dept and EMP table definition describing the tables. Confirm your additions in the data dictionary. QUERY: SQL> comment on table emp is 'Information of employees'; Comment created. SQL> comment on table dept is 'information of departments'; Comment created. SQL> select * from user_tab_comments 2 where table_name in ('DEPT','EMP'); TABLE_NAME TABLE_TYPE ---------------------------------------COMMENTS -------------------------------------------------------------------------------DEPT TABLE information of departments EMP Information of employees

TABLE

10) Drop the first_name column from emp table. QUERY: SQL> alter table emp

drop column first_name; Table altered.

11) In the emp table,mark the dept_id column in the emp table as unused. QUERY: SQL> alter table emp SET UNUSED (dept_id); Table altered.

12) Drop all the unused columns fro the emp table. QUERY: SQL>alter table emp drop unused columns; Table altered.

Chapter -10 Including Constraints 1) Add a table-level primary key constraint to the emp table on id column.

The constraint should be named at creation. Name the constraint my_emp_id_pk. QUERY: SQL> alter table emp add constraint my_emp_id_pk pimary key (id); Table altered. 2) Create a primary key constraint to the dept table using the id

column. The constraint should be named at creation. Name the constraint my_dept_id_pk. QUERY: SQL>alter table dept add constraint my_dept_id_pk primary key(id);

Table altered. 3)Add a column dept_id to the emp table. Add a foreign key

reference on the emp table that ensures that the employee is not assigned to a nonexistent department. Name the constraint my_emp_dept_id_fk. QUERY: SQL>alter table emp add (dept_id number(7)); Table altered. SQL>alter table emp add constraint my_emp_dept_id_fk foreign key (dept_id) References dept(id); Table altered.

4)Confirm that the constraints were added by querying the user_constraints view. Note the types and names of the constraints. QUERY: SQL>select constraint_name,constraint_type from user_constraints where table_name in ('EMP', 'DEPT'); CONSTRAINT_NAME

C

------------------------------ ------------------------------ --------MY_DEPT_ID_PK

P

SYS_C002541

C

MY_EMP_ID_PK

P

MY_EMP_DEPT_ID_FK

R

5)Display the object names and types from the user_objects data dictionary view for the emp and dept tables. Notice that the new tables and a new index were created. QUERY: SQL>select object_name,object_type from user_objects where object_name like 'emp%' or object_name like 'dept%';

6)Modify the emp table. Add a commission column of number data type , precision 2, scale 2. Add a constraint to the commission column that ensures that a commission value is greater than zero. QUERY: SQL>alter table emp add commission number (2,2) constraint my_emp_comm_ck check commission>=0; Table altered.

Chapter-11 Views

Creating

1) Create a view called EMPLOYEES_VU based on the employee numbers, employee names and department numbers from the EMP545table. Change the heading for the employee name to EMPLOYEE. QUERY: SQL> create or replace view employee_vu as select emp_id,last_name dept_id from emp545;

2)Display the contents of the EMPLOYEES_VU view. QUERY: SQL> select * from employee_vu;

employee,

EMP_ID LAST_NAME DEPT_ID ---------- --------------- --------------- ---------100 King 90 101 Kochhar 90 102 De Haan 90 103 Hunold 60 104 Ernst 60 107 Lorentz 60 124 Mourgos 50 141 Rajs 50 142 Davies 50 143 Matos 70 10 rows selected

3) Select the view name and text from the USER_VIEWS data dictionary view. QUERY: select view_name,text from user_views; VIEW_NAME -----------------------------TEXT -------------------------------------------------------------------------------group by d.department_id CC select deptno,sum(sal) salary from emp group by deptno CLERK select student.rollno,stream,last_name from student,students CLERK1 VIEW_NAME -----------------------------TEXT -------------------------------------------------------------------------------select clerk.rollno,students.stream,last_name from clerk,students CLERK11 select clerk.rollno,students.stream,students.name from clerk,students

COMPLEX select deptno,sum(sal) sum_salary from emp group by deptno VIEW_NAME -----------------------------TEXT -------------------------------------------------------------------------------COOL select ename,empno from emp DD select name,class from vishal11 DD1 ( select last_name,job_id from employee300)

VIEW_NAME -----------------------------TEXT -------------------------------------------------------------------------------where deptno=20 EMP342 select employee_id, last_name, phone_number from emp102 where job_id = 59 EMP4554 SELECT ENAME,JOB,MGR from emp where DEPTNO=20.

4) Using your EMPLOYEES_VU view ,enter a query to display all employee names and department numbers. QUERY: SQL> select employee,dept_id from employee_vu; EMPLOYEE DEPT_ID --------------- ---------King 90 Kochhar 90 De Haan 90

Hunold Ernst Lorentz Mourgos Rajs Davies Matos

60 60 60 50 50 50 70

10 rows selected.

5) Create a view named DEPT50 that contains the employee numbers, employee last names and department numbers for all the employees in department 50.Label the view columns EMPNO, EMPLOYEE and DEPTNO. Do not allow an employee to be reassigned to another department through the view. QUERY: SQL> create view dept50 as select emp_id empno,last_name employee, dept_id deptno from emp545 where dept_id = 50 with check option constraint emp_dept_50; View created.

6) Display the structure and contents of the DEPT50 view. QUERY: SQL> describe dept50; Name Null? Type ----------------------------------------- -------- ---------------------------EMPNO NUMBER(3) EMPLOYEE VARCHAR2(15) DEPTNO NUMBER(3) SQL> select * from dept50; EMPNO EMPLOYEE DEPTNO ---------- --------------- --------------------------124 Mourgos 50 141 Rajs 50 142 Davies 50

7)Create a view called SALARY_VU based on the employee last names, department names, salaries and salary grades for all employees. Use the EMPLOYEES,DEPARTMENTS and JOB_GRADES tables. Label the columns Employee, Department, Salary and Grade. QUERY: SQL> create or replace view salary_vu AS Select e.last_name “Employee”, d.dept_name “department” e.salary “Salary”, j.grade_level “grades” from emp545 e,dept545 d,job_grade545 j where e.dept_id=d.dept_id AND e.salary between j.lowest_sal and j.highest_sal;

Chapter-12 Other Database Object 1) Create a sequence to be used with primary key column of the dept545 table. The sequence should start at 200 and have a maximum value of 1000.Have your sequence increment by ten numbers. Name the sequence DEPT_ID_SEQ. QUERY: SQL> create sequence dept_id_seq start with 200 increment by 10 maxvalue 1000; Sequence created.

2) Write a query to display the following information about your sequence name, maximum value, increment size and last number. QUERY: SQL> select sequence_name,max_value,increment_by,last_number from user_sequences;

SEQUENCE_NAME

MAX_VALUE

INCREMENT_BY LAST_NUMBER

------------------------------ --------- ------------ -------------------------------- ------------------DEPT_ID_SEQ

1000

10

200

3)Write a query to insert two rows into the dept545 table.Be sure to use the sequence that you created for the ID column.Add two departments named Education and Administration. QUERY: SQL> insert into dept545 values (dept_id_seq.nextval,'Education'); 1 row created.

4)Create a nonunique index on the foreign key column(DEPT_ID) in the emp545 table. QUERY: SQL> create index emp_dept_id_idx on emp545 (dept_id); Index created.

5)Display the indexes and uniqueness that data dictionary for the emp545 table. QUERY: SQL> select index_name,table_name,uniqueness from user_indexes where table_name='emp545';

INDEX_NAME

TABLE_NAME

UNIQUENES

------------------------------ ------------------------------ --------EMP_DEPT_ID_IDX

EMP545

NONUNIQUE

Chapter-13 Controlling User Access 1) Grant another user access to your DEPT545 table.Have the user grant

you query access to his ot her DEPT545 table. QUERY: SQL>grant select on dept545 to ; Grant succeeded. SQL>grant select on dept545 to ; Grant succeeded. 2) Query all the rows in your DEPT545 table.

QUERY: SQL> select * from dept545; DEPT_ID DEPT_NAME

MGR_ID LOC_ID

------------- ------------------ ---------- -----------

10

Administration

200

1700

20

Marketing

201

1800

50

Shipping

124

1500

60

IT

103

1500

80

Sales

149

2500

90

Executive

100

1700

110

Accounting

205

1700

0

1700

190

Contracting

8 rows selected.

3) Add a new row to your DEPT545 table. Team 1 should add Education as department number 500.Team 2 should add Human Resources department number 510.Query the other team’s table. QUERY: SQL> insert into dept545 (dept_id,dept_name) values (500, ’Education’); 1 row created. SQL>Commit; Commit complete. SQL>insert into dept545 (dept_id,dept_name) values (510, ’Administration’); 1 row created. SQL>Commit; Commit complete.

4) Create a synonym for the other team’s DEPT545 table. QUERY:

SQL>Create synonym team2 for.Dept545; Synonym created. SQL>create synonym team1 for.Dept545; Synonym created.

5) Query all the rows in the other team’s DEPARTMENT table by using your synonym. QUERY: SQL>select * from team2;

DEPT_ID DEPT_NAME

MG_ID

LOC_ID

------------- ------------------ ---------- ----------10

Administration

200

1700

20

Marketing

201

1800

50

Shipping

124

1500

60

IT

103

1500

80

Sales

149

2500

90

Executive

100

1700

110

Accounting

205

1700

190

Contracting

0

1700

500

Education

0

0

9 rows selected. SQL>select * from team1;

DEPT_ID DEPT_NAME

MGR_ID

LOC_ID

------------- ------------------ ---------- ----------10 Administration

200

1700

20 Marketing

201

1800

50 Shipping

124

1500

60 IT

103

1500

80 Sales

149

2500

90 Executive

100

1700

110 Accounting

205

1700

190 Contracting

0

1700

510 Human Resources

0

0

9 rows selected.

6) Query the USER_TABLES data dictionary to see information about the tables that you own. QUERY: SQL> select table_name from user_tables; TABLE_NAME -----------------------------BONUS COUNTRIES DEPT545 DEPT EMP

EMP545 JOB_GRADES JOB_HISTORY LOCATIONS MY_EMPLOYEE RITESH SALGRADE 12 rows selected.

7)Query the ALL_TABLES data dictionary view to see information about all the tables that you can access. QUERY: SQL>select table_name,owner from all_tables where owner your account>;

TABLE_NAME

OWNER

------------- ------------------ ---------- ----------DEPT545

owner

1 row selected.

8) Revoke the select privilege from the other team. QUERY: SQL>revoke select on dept545 from user2; Revoke succeeded. SQL>revoke select on dept545 from user1;

Revoke succeeded.

9)Remove the row you inserted into the DEPT545 table in step 8 and save the changes. QUERY: SQL>delete from dept545 where dept_id = 500; 0 rows deleted. SQL>commit; Commit complete. SQL>delete from dept545 where dept_id=510; 0 rows deleted. SQL>commit; Commit complete.

Chapter -14 SQL Workshop 1)Create the tables based on the following table instance charts.Choose the appropriate data types. a.Table name : MEMBER QUERY: SQL>create table member (member_id number(10) constraint member _member_id_pk primary key,last_name varchar2(25) constraint member _last_name_nn NOT NULL,first_name varchar2(25),address varchar2(25),city varchar2(30),phone varchar2(15),join_date DATE DEFAULT SYSDATE constraint member_join//-date_nn NOT NULL); Table created.

b.Table name : TITLE QUERY: SQL> create table title(title_id number(10) constraint title_title_pk primary key,title varchar2(60) constraint title_title_nn NOT NULL,description varchar2(400) constraint title_description_nn NOT NULL,rating varchar2(4) constraint title_rating_ck CHECK (rating in (‘G’,’PG’,’R’,’NC17’,’NR’)),category varchar2(20), constraint title_category_ck CHECK (category in (‘DRAMA’ , ‘COMEDY’ , ‘ACTION’ , ‘CHILD’ , ‘SCIFI’ , ‘DOCUMENTARY’)),release_date DATE);

Table created.

c.Table name : TITLE_COPY QUERY: SQL>create table title_COPY (copy_id number(10),title_id number(10) constraint title_if_fk REFERENCES title (title_id), status varchar2(15) constraint title_copy_status_nn NOT NULL ,constraint title_copy_status_ck CHECK(status in (‘AVAILABLE’ , ‘DESTROYED’ , ‘RENTED’ , ‘RESERVED’)), constraint title_copy_copy_id_title_id_pk primary key (copy_id,title_id)); Table created.

d.Table name : RENTAL QUERY: SQL>create table rental (book_date DATE DEFAULT SYSDATE,member_id number(10) constraint rental_member_id_fk REFERENCES member (member_id),copy_id number(10),act_ret_date DATE,exp_ret_date DATE,exp_ret_date DATE DEFAULT SYSDATE +2,title_id number (10), constraint rental_book_date_copy_title_pk primary key (book_date,member_id,copy_id,title_id), constraint rental_copy_id,title_id_fk foreign key (copy_id,title_id) REFERENCES title_copy (copy_id,tittle_id)); Table created.

e.Table name : RESERVATION QUERY: SQL>create table reservation (res_date DATE, member_id number(10) constraint reservation _ member _ id REFERENCES member (member_id),title_id number(10) constraint reservation_title_id REFERENCES title (title_id),constraint reservation_resdate_mem_tit_pk primary key (res_date, member_id , title_id_; Table created.

3)Create sequences to uniquely identify each row in the MEMBER table and the TITLE table. a.Member number for the MEMBER table:start with 101;do not allow caching of the values.Name the sequence MEMBER_ID_SEQ.

QUERY: SQL>create sequence member_id_seq start with 101 nocache;

b.Title number for the TITLE table : start with 92;no caching.Name the sequence TITLE_ID_SEQ. QUERY:

SQL>create sequence title_id_seq start with 92 nocache;

4)Add data to the tables.Create a script for each set of data to add. a.Add movie titles to the TITLE table.Write a script to enter the movie information.Use the sequences to uniquely identify each title.Enter the release dates in theDD-MON-YYYY format.Verify your additions. QUERY: SQL>set echo off Insert into title(title_id,title,description,rating,category,release_date) values (title_id_seq.nextval, ’willlie and Christmas too’,’all of willie’’s friends make a christmas list for santa,but willie has yet to add his own wish list .’ , ‘G’ , ‘child’ ,to_date(’05-oct-1995’,’DD-MON-YYYY’) 1 row created. Insert into title(title_id,title,description,rating,category,release_date) values (title_id_seq.nextval,’alien again’ , ‘yet another installation of science fiction history.can the heroine save the planet from the alien life form?’,’R’ ,’SCIFI’ ,to_date (’19-may1995’,’DD-MON-YYYY’)) 1 row created. Insert into title(title_id,title,description,rating,category,release_date) values (title_id_seq.nextval,’the glob’,’a meteor crashes near a small American town and unleashes carnivorous goo in this classic..’ , ’nr’ , ‘SCIFI’ , to_date (’12-AUG-1995’ , ‘DDMON-YYYY’))

1 row created. Set echo on SQL>select title from title;

b.Add data to the MEMBER table. QUERY: SQL> set echo off set verify off insert into member ( member_id , first_name , last_name, address ,city ,phone ,join_date) values (member_id_seq.nextval,’&first_name’,’&last_name’ , ‘&address’ , ‘&city’ , ‘&phone’ , to_date(‘&join_date’,’DD-MON-YYYY’); 1 row created. SQL>commit; Commit complete. SQL>set verify on set echo on

c.Add the following movie copies in the TITLE_COPY table. QUERY: SQL> insert into title_copy (copy_id,title_id,status) values (1,92,’AVAILABLE’); 1 row created. SQL> insert into title_copy (copy_id,title_id,status) values (1,93’AVAILABLE’); 1 row created. SQL> insert into title_copy (copy_id,title_id,status) values (2,93,’RENTED’); 1 row created. SQL> insert into title_copy (copy_id,title_id,status) values (1,94,’AVAILABLE’); 1 row created.

SQL> insert into title_copy (copy_id,title_id,status) values (1,95,’AVAILABLE’); 1 row created. SQL> insert into title_copy (copy_id,title_id,status) values (2,95,’AVAILABLE’); 1 row created. SQL> insert into title_copy (copy_id,title_id,status) values (3,95,’RENTED’); 1 row created. SQL> insert into title_copy (copy_id,title_id,status) values (1,96,’AVAILABLE’); 1 row created. SQL> insert into title_copy (copy_id,title_id,status) values (1,97,’AVAILABLE’); 1 row created.

d.Add the following rentals to the RENTAL table : QUERY: SQL>insert into rental (title_id,copy_id,member_id,book_date,exp_ret_date,act_ret_date) values (92,1,101,sysdate-3,sysdate-1,sysdate-2); 1 row created. SQL>insert into rental (title_id,copy_id,member_id,book_date,exp_ret_date,act_ret_date) values(93,2,101,sysdate-1,sysdate-1,NULL); 1 row created. SQL>insert into rental (title_id,copy_id,member_id,book_date,exp_ret_date,act_ret_date) values(95,3,102,sysdate-2,sysdate,NULL); 1 row created. SQL>insert into rental (title_id,copy_id,member_id,book_date,exp_ret_date,act_ret_date) values(97,1,102,sysdate-2,sysdate,NULL); 1 row created. SQL>insert into rental (title_id,copy_id,member_id,book_date,exp_ret_date,act_ret_date)

values(97,1,106,sysdate-4,sysdate-2,sysdate-2); 1 row created. SQL>commit; Commit complete.

5)Create a view named TITLE_AVAIL to show the movie titles and the availabilities of each copy and its expected return date if rented.Query all rows from the view.Order the results by title. QUERY: SQL>create view title_avail as select t.title,c.copy_id,c.status,r.exp_ret_date from title t,title_copy c,rental r where t.title_id = c.title_id and c.copy_id = r.copy_id(+) and c.title_id = r.title_id(+); View created.

6) Add a new title.The movie is “Interstellar Wars”

Chapter-15 Using SET Operators 1) List the department IDs for dept545 that do not contain the job ID

ST_CLERK,using SET operations. QUERY: SQL> select dept_id from dept545 minus select dept_id from emp545 where job_id='ST_CLERK'; DEPT_ID ---------10 20 60 80 90 110 190 7 rows selected. 2) Display the country ID and the name of the countries that have no

departments located in them using SET operations. QUERY:

SQL> select country_id,country_name from country545 MINUS select l.country_id,c.country_name from loc545 l,country545 c where l.country_id=c.country_id;

CO

COUNTRY_NAME

--- ----------------------------------DE

Germany

3) Produce a list of jobs for dept545 10,50and 20 in that order.Display job

ID and department ID using SET operators. QUERY: SQL> select job_id,dept_id,'x' from emp545 where dept_id=10 union select job_id,dept_id,'y' from emp545 where dept_id=50 union select job_id,dept_id,'z' from emp545 where dept_id=20 order by 3; JOB_ID

DEPT_ID

------------ ------------- ST_CLERK

50 y

ST_MAN

50 y

4)List the employee IDs and job IDs of those emp545 who currently have the job title that they held before beginning their tenure with the company. QUERY: SQL> select emp_id,job_id from emp545 intersect select emp_id,job_id from job_history; no rows selected

5) Write a compound query to lists the following

a) Last names and department ID of all the employees from the EMP545 table, regardless of whether or not they belong to any department. b)Department ID and department name of all the departments from the DEPT545 table, regardless of whether or not they have emp545 worKING in them. QUERY: SQL> select last_name,dept_id,to_char(null) from emp545 union select to_char(null),dept_id,dept_name from dept545; LAST_NAME

DEPT_ID TO_CHAR(NULL)

------------------ ------------- -----------------King

90

Davies

50

De Haan

90

Ernst

60

Hunold

60

Kochhar

90

Lorentz

60

Matos

50

Mourgos

50

Rajs

50

Chapter 16 Oracle 9i Date Time Functions 1) Alter the session to set the NLS_DATE_FORMAT to DD-MON-YYYY HH24:MI:SS. QUERY: SQL> alter session set nls_date_format='dd-mon-yyyy hh24:mi:ss'; Session altered.

2) a.Write queries to display the time zone offsets (TZ_OFFSET) for the following time zones-: US/Pacific-New,Singapore,Egypt. QUERY: SQL> select tz_offset('us/pacific-new') from dual; TZ_OFFS -------07:00 SQL> select tz_offset('singapore') from dual; TZ_OFFS ------+08:00 SQL> select tz_offset('egypt') from dual; TZ_OFFS ------+03:00

b.Alter the session to set the TIME_ZONE parameter value to the time zone offset of US/Pacific-New QUERY: SQL> alter session set time_zone='-7:00'; Session altered.

c.Display the CURRENT_DATE,CURRENT_TIMESTAMP and LOCALTIMESTAMP for this session. QUERY: SQL> select current_date,current_timestamp,localtimestamp from dual; CURRENT_D --------CURRENT_TIMESTAMP --------------------------------------------------------------------------LOCALTIMESTAMP --------------------------------------------------------------------------16-JUL-08 16-JUL-08 12.52.20.859000 PM -07:00 16-JUL-08 12.52.20.859000 PM

d.Alter the session to set the TIME_ZONE parameter value to the time zone offset of Singapore. QUERY: SQL> alter session set time_zone ='+8:00'; Session altered.

e.Display the CURRENT_DATE, CURRENT_TIMESTAMP and LOCALTIMESTAMP for this session. QUERY: SQL> select current_date,current_timestamp,localtimestamp from dual; CURRENT_D --------CURRENT_TIMESTAMP

--------------------------------------------------------------------------LOCALTIMESTAMP --------------------------------------------------------------------------17-JUL-08 17-JUL-08 03.54.18.937000 AM +08:00 17-JUL-08 03.54.18.937000 AM

3)Write a query to display the DBTIMEZONE and SESSIONTIMEZONE. QUERY: SQL> select dbtimezone,sessiontimezone from dual; DBTIME -----SESSIONTIMEZONE ---------------------------------------------------------------------------07:00 +08:00

4) Write a query to extract the YEAR from the HIRE_DATE column of the EMPLOYEES table for those employees who work in department 80. QUERY: SQL> select last_name,extract(year from hire_date) from emp545 where dept_id =80; LAST_NAME EXTRACT(YEAR FROM HIRE_DATE) ---------- -------------------------King 1987 Kochhar 1989 De Haan 1993

5) Alter the session to set the NLS_DATE_FORMAT to DD-MON-YYYY. QUERY: SQL> alter session set nls_date_format='dd-mon-yyyy'; Session altered.

Chapter 17 Enhancements To The Group By clause 1) Write a query to display the following for those employees whose manager id is less than 120:  Manager id  Job id and total salary for every job id for employees who report to the same  manager  Total salary of those managers  Total salary of those managers irrespective of the job ids. QUERY: SQL> select mgr_id,job_id,sum(salary) from emp545 where mgr_id select mgr_id,job_id,sum(salary),grouping(mgr_id),grouping(job_id) from emp545 where mgr_id select mgr_id,job_id,sum(salary) from emp545 where mgr_id select mgr_id,job_id,sum(salary),grouping(mgr_id),grouping(job_id) from emp545 where mgr_id select last_name, dept_id, salary from emp545 where (salary, dept_id) IN (select salary, dept_id from emp545 where comm_pct is not null); no rows selected

2) Display the last name, department name and salary of any employee whose salary and commission match the salary and commission of any employee located in location ID 1700. QUERY: SQL> select e.last_name,d.dept_name,e.salary from emp545 e,dept545 d where e.dept_id=d.dept_id AND (salary,nvl (comm_pct,0)) IN (select salary,nvl(comm_pct,0) from emp545 e,dept545 d where e.dept_id=d.dept_id AND d.loc_id=1700); LAST_NAME DEPT_NAME SALARY ---------- -------------------- --------------------------------Kochhar Executive 17000 De Haan Executive 17000 King Executive 24000

3) Create a query to display the last name, hire date and salary for all

employees who have the same salary and commission as Kochhar. QUERY: SQL> select last_name, hire_date,salary from emp545 where (salary,nvl(comm_pct,0)) IN (select salary,nvl(comm_pct,0) from emp545 where last_name='Kochhar') AND last_name !='Kochhar'; LAST_NAME HIRE_DATE SALARY ---------- --------- --------- ----------------------De Haan 13-JAN-93 17000

4) Create a query to display the employees who earn a salary that is higher than the salary of all the sales managers (JOB_ID=’SA_MAN’).Sort the results on salary from highest to lowest. QUERY: SQL> select last_name,job_id,salary from emp545 where salary >all (select salary from emp545 where job_id='SA_MAN') order by salary desc; LAST_NAME JOB_ID SALARY ---------- -------- --------- --------------------------King AD_PRES 24000 Kochhar AD_VP 17000 De Haan AD_VP 17000 Hunold IT_PROG 9000 Ernst IT_PROG 6000 Mourgos ST_MAN 5800 Lorentz IT_PROG 4200 Rajs ST_CLERK 3500 Davies ST_CLERK 3100 Matos ST_CLERK 2600 10 rows selected.

5) Display the details of the employee ID, last name and department ID of those employees who live in cities whose name begins with T QUERY: SQL> select emp_id,last_name,dept_id from emp545 where dept_id IN

(select dept_id from dept545 where loc_id IN (select loc_id from loc546 where city like't%')); no rows selected

6) Write a query to find all employees who earn more than the average salary in their departments. Display last name, salary, department ID and the average salary for the department. Sort by average salary. Use aliases for the columns retrieved by the query. QUERY: SQL> select e.last_name ename, e.salary sal,e.dept_id deptno,avg(b.salary) avg from emp545 e,emp545 b where e.dept_id = b.dept_id AND e.salary > (select avg(salary) from emp545 where dept_id = e.dept_id) group by e.last_name, e.salary, e.dept_id order by avg(b.salary); ENAME SAL DEPTNO AVG ---------- --------- --------- ------------ --------------Mourgos 5800 50 3750 Hunold 9000 60 6400 King 24000 90 19333.333

7) Find all employees who are not supervisors. a)First do this by using the NOT EXISTS operator QUERY: SQL> select e.last_name from emp545 e where not exists (select 'X' from emp545 e1 where e1.mgr_id = e.emp_id); LAST_NAME ---------Kochhar Ernst Lorentz Rajs Davies Matos 6 rows selected.

b) Can this be done by using the NOT IN operator? How, or why not?

QUERY: SQL> select e.last_name from emp545 e where e.emp_id not in (select e1.mgr_id from emp545 e1); no rows selected

8) Write a query to display the last names of the employees who earn less than the average salary in their departments. QUERY: SQL> select last_name from emp545 e where e.salary < (select avg(e1.salary) from emp545 e1 where e1.dept_id = e.dept_id);

LAST_NAME ---------Kochhar De Haan Ernst Lorentz Rajs Davies Matos 7 rows selected.

9)Write a query to display the last names of employees who have one or more coworkers in their departments with later hire dates but higher salaries. QUERY: SQL> select last_name from emp545 e where exists(select 'X' from emp545 e1 where e1.dept_id = e.dept_id AND e1.hire_date > e.hire_date AND e1.salary > e.salary); LAST_NAME ---------Rajs Davies Matos

10) Write a query to display the employee ID,last names and department names of all employees.

QUERY: SQL> select emp_id,last_name,(select dept_name from dept545 d where 2 e.dept_id = d.dept_id) dept 3 from emp545 e 4 order by dept; EMP_ID LAST_NAME DEPT --------- ---------- ------------------103 Hunold IT 104 Ernst IT 107 Lorentz IT 100 King Executive 101 Kochhar Executive 102 De Haan Executive 124 Mourgos Shipping 141 Rajs Shipping 142 Davies Shipping 143 Matos Shipping 10 rows selected.

Chapter-19 Hierarchical Retrieval 1) Produce a report showing an organization chart for Mourgos’s

department.Print last names,salaries and department IDs. QUERY: SQL> select last_name,salary,dept_id from emp545 start with last_name='Mourgos' connect by prior emp_id = mgr_id; LAST_NAME

SALARY DEPT_ID

------------------ --------- ------------Mourgos

5800

50

2)Create a report that shows the hierarchy of the managers for the employee Lorentz.Display his immediate manager first. QUERY: SQL> select last_name from emp545 where last_name !='Lorentz' connect by prior mgr_id = emp_id; LAST_NAME -----------------King Kochhar De Haan Hunold

Ernst Mourgos Rajs Davies Matos Mourgos Hunold King 12 rows selected.

3)Create a indented report showing the management hierarchy starting from the employee whose LAST_NAME is Kochhar.Print the employee’s last name,manager ID and department ID.Give alias to the columns as shown in sample output. QUERY: SQL> select LPAD (last_name,length(last_name)+(level*2)-2,'_')name,mgr_id mgr,dept_id deptno from emp545 start with last_name='Kochhar' connect by prior emp_id=mgr_id; no rows selected

4)Produce a company organization chart that shows the management hierarchy.Start with the person at the top level,exclude all people with a job ID IT_PROG and exclude De Haan and those emp545 who report to De Haan. QUERY: SQL> select last_name,emp_id,manager_id from emp545 where job_id !='IT_PROG' start with mgr_id is null connect by prior emp_id=mgr_id and last_name !='De Haan';

LAST_NAME EMP_ID MANAGER_ID ------------------ ----------- ---------King

100

Kochhar

101

De Haan

102

Mourgos

124

Rajs

141

Davies

142

Matos

143

7 rows selected.

Chapter-20 Oracle 9i Extensions to DML and DDL Statements 1) Create table sal_history. QUERY: SQL> create table sal_history(emp_id number(6), hire_date date,salary number(8,2)); Table created.

2) Display the structure of the table sal_history. QUERY: SQL> desc sal_history; Name Null? Type ----------------------------------------------------- -------- -----------------------------EMP_ID NUMBER(6) HIRE_DATE DATE SALARY NUMBER(8,2) 3) Create the table mgr_history. QUERY: SQL> create table mgr_history(emp_id number(6),mgr_id number(6),salary number(8,2)); Table created.

4) Display the structure mgr_history. QUERY: SQL> desc mgr_history; Name

Null?

Type

----------------------------------------------------- -------- -----------------EMP_ID NUMBER(6) MGR_ID NUMBER(6) SALARY NUMBER(8,2)

5) Create table special_sal. QUERY: SQL> create table special_sal(emp_id number(6),salary number(8,2)); Table created.

6) Display the structure of special_sal table QUERY: SQL> desc special_sal; Name Null? Type ----------------------------------------------------- -------- ---------------------EMP_ID NUMBER(6) SALARY NUMBER(8,2)

7) a.Write a query to do the following: -Retrieve the details of the employee ID,hire date,salary and manager ID of those employees whose employee ID is less than 125 from the EMP545 table. -If the salary is more than $20,000 insert the details of employee ID and salary into the SPECIAL_SAL table. -Insert the details of the employee ID,hire date and salary into the SAL_HISTORY table. -Insert the details of the employee ID,manager ID and SYSDATE into the MGR_HISTORY table. QUERY: Insert ALL When SAL>20000 then Into special_sal values (EMPID,SAL)

Else Into sal_history values(EMPID,HIREDATE,SAL) Into mgr_history values(EMPID,MGR,SAL) Select emp_id EMPID,hire_date HIREDATE, Salary SAL,mgr_id MGR from emp545 Where emp_id create table sales_source_data(emp_id number(4),wk_id number(2),sl_mon number(8,2), sl_tue number(8,2),sl_wed number(8,2),sl_thur number(8,2),sl_fri number(8,2));

b) Insert records into the SALES_SOURCE_DATA table. QUERY: SQL> insert into sales_source_datavalues(178,6,1750,2200,1500,1500,3000); 1 row created.

c)Display the structure of the SALES_SOURCE_DATA table. QUERY: SQL> desc sales_source_data; Name Null? Type ----------------------------------------------------- -------- ------------------------EMP_ID NUMBER(4) WK_ID NUMBER(2) SL_MON NUMBER(8,2) SL_TUE NUMBER(8,2) SL_WED NUMBER(8,2) SL_THUR NUMBER(8,2) SL_FRI NUMBER(8,2)

d)Display the records from the SALES_SOURCE_DATA table. QUERY: SQL> select * from sales_source_data; EMP_ID WK_ID SL_MON

SL_TUE

SL_WED

SL _THUR SL_FRI

--------- --------- --------- --------- --------- ---------- --------- ------------------ -----------178 6 1750 2200 1500 1500 3000

e) Create SALES_INFO table. QUERY: SQL> create table sales_info(emp_id number(6),week number(2),sales number(8,2)); Table created.

f) Display the structure of the SALES_INFO table. QUERY: SQL> desc sales_info; Name Null? Type ----------------------------------------------------- -------- -----------------EMP_ID NUMBER(6) WEEK NUMBER(2) SALES NUMBER(8,2)

g)Write a query to do the following:-Retrieve the details of the employee ID,week ID,sales on Monday, sales on Tuesday,SALES_SOURCE_DATA table. -Build a transformation such that record retrieved from the SALES_SOURCE_DATA table is converted into multiple records for the SALES_INFO table. QUERY: insert all into sales_info values(emp_id,week_id,sl_mon) into sales_info values(emp_id,week_id,sl_tue) into sales_info values(emp_id,week_id,sl_wed) into sales_info values(emp_id,week_id,sl_thur) into sales_info values(emp_id,week_id,sl_fri) select emp_id,week_id,sl_mon,sl_tue,sl_wed,sl_thur, Sl_fri from sales_source_data;

h) Display the records from the SALES_INFO table. QUERY: select * from sales_info; EMP_ID WK SALES ------------- ------------------- --------------------------178 6 1750 178 6 2200 178 6 1500 178 6 1500 178 6 3000

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF