
- •Preface
- •Introduction
- •Lesson Objectives
- •Lesson Agenda
- •Course Objectives
- •Course Agenda
- •Appendixes Used in the Course
- •Lesson Agenda
- •Oracle Database 11g: Focus Areas
- •Oracle Database 11g
- •Oracle Fusion Middleware
- •Oracle Enterprise Manager Grid Control 10g
- •Oracle BI Publisher
- •Lesson Agenda
- •Relational and Object Relational Database Management Systems
- •Data Storage on Different Media
- •Relational Database Concept
- •Definition of a Relational Database
- •Data Models
- •Entity Relationship Model
- •Relating Multiple Tables
- •Relational Database Terminology
- •Lesson Agenda
- •Using SQL to Query Your Database
- •SQL Statements
- •Development Environments for SQL
- •Lesson Agenda
- •The Human Resources (HR) Schema
- •Tables Used in the Course
- •Lesson Agenda
- •Oracle Database 11g Documentation
- •Additional Resources
- •Summary
- •Practice I: Overview
- •Objectives
- •Lesson Agenda
- •Capabilities of SQL SELECT Statements
- •Basic SELECT Statement
- •Selecting All Columns
- •Selecting Specific Columns
- •Writing SQL Statements
- •Column Heading Defaults
- •Lesson Agenda
- •Arithmetic Expressions
- •Using Arithmetic Operators
- •Operator Precedence
- •Defining a Null Value
- •Null Values in Arithmetic Expressions
- •Lesson Agenda
- •Defining a Column Alias
- •Using Column Aliases
- •Lesson Agenda
- •Concatenation Operator
- •Literal Character Strings
- •Using Literal Character Strings
- •Alternative Quote (q) Operator
- •Duplicate Rows
- •Lesson Agenda
- •Displaying the Table Structure
- •Using the DESCRIBE Command
- •Quiz
- •Summary
- •Practice 1: Overview
- •Objectives
- •Lesson Agenda
- •Limiting Rows Using a Selection
- •Limiting the Rows That Are Selected
- •Using the WHERE Clause
- •Character Strings and Dates
- •Comparison Operators
- •Using Comparison Operators
- •Range Conditions Using the BETWEEN Operator
- •Membership Condition Using the IN Operator
- •Pattern Matching Using the LIKE Operator
- •Combining Wildcard Characters
- •Using the NULL Conditions
- •Defining Conditions Using the Logical Operators
- •Using the AND Operator
- •Using the OR Operator
- •Using the NOT Operator
- •Lesson Agenda
- •Rules of Precedence
- •Lesson Agenda
- •Using the ORDER BY Clause
- •Sorting
- •Lesson Agenda
- •Substitution Variables
- •Using the Single-Ampersand Substitution Variable
- •Character and Date Values with Substitution Variables
- •Specifying Column Names, Expressions, and Text
- •Using the Double-Ampersand Substitution Variable
- •Lesson Agenda
- •Using the DEFINE Command
- •Using the VERIFY Command
- •Quiz
- •Summary
- •Practice 2: Overview
- •Objectives
- •Lesson Agenda
- •SQL Functions
- •Two Types of SQL Functions
- •Single-Row Functions
- •Lesson Agenda
- •Character Functions
- •Case-Conversion Functions
- •Using Case-Conversion Functions
- •Character-Manipulation Functions
- •Using the Character-Manipulation Functions
- •Lesson Agenda
- •Number Functions
- •Using the ROUND Function
- •Using the TRUNC Function
- •Using the MOD Function
- •Lesson Agenda
- •Working with Dates
- •RR Date Format
- •Using the SYSDATE Function
- •Arithmetic with Dates
- •Using Arithmetic Operators with Dates
- •Lesson Agenda
- •Date-Manipulation Functions
- •Using Date Functions
- •Using ROUND and TRUNC Functions with Dates
- •Quiz
- •Summary
- •Practice 3: Overview
- •Objectives
- •Lesson Agenda
- •Conversion Functions
- •Implicit Data Type Conversion
- •Explicit Data Type Conversion
- •Lesson Agenda
- •Using the TO_CHAR Function with Dates
- •Elements of the Date Format Model
- •Using the TO_CHAR Function with Dates
- •Using the TO_CHAR Function with Numbers
- •Using the TO_NUMBER and TO_DATE Functions
- •Using the TO_CHAR and TO_DATE Function with RR Date Format
- •Lesson Agenda
- •Nesting Functions
- •Lesson Agenda
- •General Functions
- •NVL Function
- •Using the NVL Function
- •Using the NVL2 Function
- •Using the NULLIF Function
- •Using the COALESCE Function
- •Lesson Agenda
- •Conditional Expressions
- •CASE Expression
- •Using the CASE Expression
- •DECODE Function
- •Using the DECODE Function
- •Quiz
- •Summary
- •Practice 4: Overview
- •Objectives
- •Lesson Agenda
- •What Are Group Functions?
- •Types of Group Functions
- •Group Functions: Syntax
- •Using the AVG and SUM Functions
- •Using the MIN and MAX Functions
- •Using the COUNT Function
- •Using the DISTINCT Keyword
- •Group Functions and Null Values
- •Lesson Agenda
- •Creating Groups of Data
- •Creating Groups of Data: GROUP BY Clause Syntax
- •Using the GROUP BY Clause
- •Grouping by More than One Column
- •Using the GROUP BY Clause on Multiple Columns
- •Illegal Queries Using Group Functions
- •Restricting Group Results
- •Restricting Group Results with the HAVING Clause
- •Using the HAVING Clause
- •Lesson Agenda
- •Nesting Group Functions
- •Quiz
- •Summary
- •Practice 5: Overview
- •Objectives
- •Lesson Agenda
- •Types of Joins
- •Joining Tables Using SQL:1999 Syntax
- •Qualifying Ambiguous Column Names
- •Lesson Agenda
- •Creating Natural Joins
- •Retrieving Records with Natural Joins
- •Creating Joins with the USING Clause
- •Joining Column Names
- •Retrieving Records with the USING Clause
- •Using Table Aliases with the USING Clause
- •Creating Joins with the ON Clause
- •Retrieving Records with the ON Clause
- •Creating Three-Way Joins with the ON Clause
- •Applying Additional Conditions to a Join
- •Lesson Agenda
- •Joining a Table to Itself
- •Self-Joins Using the ON Clause
- •Lesson Agenda
- •Nonequijoins
- •Retrieving Records with Nonequijoins
- •Lesson Agenda
- •INNER Versus OUTER Joins
- •LEFT OUTER JOIN
- •RIGHT OUTER JOIN
- •FULL OUTER JOIN
- •Lesson Agenda
- •Cartesian Products
- •Generating a Cartesian Product
- •Creating Cross Joins
- •Quiz
- •Summary
- •Practice 6: Overview
- •Objectives
- •Lesson Agenda
- •Using a Subquery to Solve a Problem
- •Subquery Syntax
- •Using a Subquery
- •Guidelines for Using Subqueries
- •Types of Subqueries
- •Lesson Agenda
- •Single-Row Subqueries
- •Executing Single-Row Subqueries
- •Using Group Functions in a Subquery
- •The HAVING Clause with Subqueries
- •What Is Wrong with This Statement?
- •No Rows Returned by the Inner Query
- •Lesson Agenda
- •Multiple-Row Subqueries
- •Lesson Agenda
- •Null Values in a Subquery
- •Quiz
- •Summary
- •Practice 7: Overview
- •Objectives
- •Lesson Agenda
- •Set Operators
- •Set Operator Guidelines
- •The Oracle Server and Set Operators
- •Lesson Agenda
- •Tables Used in This Lesson
- •Lesson Agenda
- •UNION Operator
- •Using the UNION Operator
- •UNION ALL Operator
- •Using the UNION ALL Operator
- •Lesson Agenda
- •INTERSECT Operator
- •Using the INTERSECT Operator
- •Lesson Agenda
- •MINUS Operator
- •Using the MINUS Operator
- •Lesson Agenda
- •Matching the SELECT Statements
- •Matching the SELECT Statement: Example
- •Lesson Agenda
- •Using the ORDER BY Clause in Set Operations
- •Quiz
- •Summary
- •Practice 8: Overview

Using the DECODE Function
SELECT last_name, job_id, salary,
DECODE(job_id, 'IT_PROG', 1.10*salary, 'ST_CLERK', 1.15*salary, 'SA_REP', 1.20*salary,
|
|
|
salary) |
|
|
|
|
|
|
|
|
|
|
REVISED_SALARY |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FROM |
employees; |
|
|
|
|
|
|
|
|
|
… |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
… |
|
|
|
|
|
|
|
|
|
|
… |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
Copyright © 2009, Oracle. All rights reserved. |
|
|
|
|
|||
Using the DECODE Function |
|
|
|
Academy |
||||||
|
In the SQL statement in the slide, the value of |
|
|
|
||||||
|
JOB ID is tested. If JOB_ID is IT_PROG, the salary |
increase is 10%; if JOB_ID is ST_CLERK, the salary increase is 15%; if JOB_ID is SA_REP, the |
||
salary increase is 20%. For all other job roles, there is no increase in salary. |
||
The same statement can be expressed in pseudocode as an IF-THEN-ELSE statement: |
||
IF job_id = 'IT_PROG' |
Oracle |
|
THEN |
salary = salary*1.10 |
|
IF job_id = 'ST_CLERK'&THEN |
salary = salary*1.15 |
|
IF job id = 'SA REP' |
THEN |
salary = salary*1.20 |
ELSE salary = salary |
Only |
|
Use |
|
|
Internal |
|
|
Oracle |
|
|
Oracle Database 11g: SQL Fundamentals I 4 - 40

Using the DECODE Function
Display the applicable tax rate for each employee in department 80:
|
|
SELECT last_name, salary, |
|
|
|
|
|
|
||||
|
|
|
|
DECODE (TRUNC(salary/2000, 0), |
|
|
|
|||||
|
|
|
|
|
|
|
0, 0.00, |
|
|
|
|
|
|
|
|
|
|
|
|
1, 0.09, |
|
|
|
|
|
|
|
|
|
|
|
|
2, 0.20, |
|
|
|
|
|
|
|
|
|
|
|
|
3, 0.30, |
|
|
|
|
|
|
|
|
|
|
|
|
4, 0.40, |
|
|
|
|
|
|
|
|
|
|
|
|
5, 0.42, |
|
|
|
|
|
|
|
|
|
|
|
|
6, 0.44, |
|
|
|
|
|
|
|
|
|
|
|
|
|
0.45) |
TAX_RATE |
|
|
|
|
|
FROM |
|
employees |
|
|
|
|
|
|
|
|
|
|
WHERE |
department_id = 80; |
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Copyright © 2009, Oracle. All rights reserved. |
Academy |
||||||
|
|
|
|
|
|
|
|
|||||
Using the DECODE Function (continued) |
Oracle |
|||||||||||
|
This slide shows another example using the |
DECODE function. In this example, you determine the |
||||||||||
|
tax rate for each employee in department 80 based on the monthly salary. The tax rates are as |
|||||||||||
|
follows: |
|
|
|
|
|
|
|
|
|
||
|
Monthly Salary Range |
Tax Rate |
|
Only |
|
|
|
|||||
|
$0.00–1,999.99 |
|
00% |
|
|
|
|
|
||||
|
$2,000.00–3,999.99 |
|
09% & |
|
|
|
|
|
||||
|
$12,200.00–13,999.99Internal44% |
|
|
|
|
|
|
|
||||
|
$4,000.00–5,999.99 |
|
20% |
|
|
|
|
|
|
|
||
|
$6,000.00–7,999.99 |
|
30% |
|
|
|
|
|
|
|
||
|
$8,000.00–9,999.99 |
|
40% |
|
|
|
|
|
|
|
||
|
$10,000.00–11,999.99 |
42%Use |
|
|
|
|
||||||
Oracle |
|
45% |
|
|
|
|
|
|
|
|||
|
$14,000.00 or gr ater |
|
|
|
|
|
|
|
Oracle Database 11g: SQL Fundamentals I 4 - 41

Quiz
The TO_NUMBER function converts either character strings or date values to a number in the format specified by the optional format model.
1.True
2.False
Answer: 2 |
Copyright © 2009, Oracle. All rights reserved. |
Academy |
|||
|
|
|
|||
|
|
|
Oracle |
||
|
|
& |
Only |
|
|
|
Internal |
|
|
|
|
Oracle |
Use |
|
|||
|
|
|
|
Oracle Database 11g: SQL Fundamentals I 4 - 42

Summary
In this lesson, you should have learned how to:
•Alter date formats for display using functions
•Convert column data types using functions
•Use NVL functions
•Use IF-THEN-ELSE logic and other conditional expressions in a SELECT statement
Summary |
Copyright © 2009, Oracle. All rights reserved. |
Academy |
|||
|
|
|
|||
|
COALESCE. |
|
Oracle |
||
|
Remember the following: |
|
|
|
|
|
• Conversion functions can convert character, date, and numeric values: TO_CHAR, TO_DATE, |
||||
|
TO_NUMBER |
|
|
|
|
|
• There are several functions that pertain to nulls, including NVL, NVL2, NULLIF, and |
||||
|
|
& |
Only |
|
|
|
• IF-THEN-ELSE logic can be applied within a SQL statement by using the CASE expression or |
||||
|
Internal |
|
|
|
|
|
the DECODE function. |
|
|
|
|
Oracle |
Use |
|
|||
|
|
|
|
Oracle Database 11g: SQL Fundamentals I 4 - 43