Está en la página 1de 2

academy.oracle.

com

Programación de Bases de Datos con SQL


5-3: Expresiones Condicionales
Actividades de Práctica

Objetivos
 Comparar y contrastar las funciones DECODE y CASE
 Crear y ejecutar una consulta SQL que utiliza correctamente las funciones
DECODE y CASE
 Crear y ejecutar dos métodos para implantar la lógica condicional IF-THEN-ELSE

Terminología
Identifique el término para cada una de las siguientes definiciones.

DECODE Compara una expresión con cada uno de los valores de


búsqueda

conditional expression Expresión if-then-else cuyo valor depende del valor verdadero de
una expresión booleana.
CASE Implanta el procesamiento condicional dentro de una sentencia
SQL; cumple el estándar de ANSI.

Inténtelo/Resuélvalo

1. En la tabla d_songs de DJs on Demand, cree una consulta que sustituya las canciones
de 2 minutos por shortest” y las canciones de 10 minutos por “longest”. Etiquete la
columna de salida como “Play Times”.
SELECT title,
CASE
WHEN TO_NUMBER(REPLACE(NVL(duration,'0 min'), ' min', '')) = 2 THEN 'Shortest'
WHEN TO_NUMBER(REPLACE(NVL(duration,'0 min'), ' min', '')) = 10 THEN 'Longest'
ELSE NVL(duration,'0 min')
END
FROM d_songs;

2. Utilice la tabla employees de la base de datos Oracle y la expresión CASE para


descodificar el ID de departamento. Muestre el ID de departamento, el apellido, el salario
y una columna denominada “New Salary” cuyo valor se basa en las siguientes
condiciones:
Si el ID de departamento es 10, aplique 1.25 * salary
Si el ID de departamento es 90, aplique 1.5 * salary
Si el ID de departamento es 130, aplique 1.75 * salary
De lo contrario, muestre el antiguo salario.
R:
SELECT NVL(TO_CHAR(department_id), 'none')
department_id , last_name, NVL(salary,0) salary,
CASE department_id
WHEN 10 THEN 1.25*NVL(salary,0)
WHEN 90 THEN 1.5*NVL(salary,0)
WHEN 130 THEN 1.75*NVL(salary,0)
ELSE NVL(salary,0)
END
FROM employees;

3. Muestre el nombre, el apellido, el ID de jefe y el porcentaje de comisión de todos los


empleados de los departamentos 80 y 90. En la quinta columna denominada
“Review”, vuelva a mostrar el ID de jefe. Si no tienen un jefe, muestre el porcentaje de
comisión. Si no tienen una comisión, muestre 99999.
R:SELECT first_name, last_name, manager_id, commission_pct,
COALESCE(manager_id,commission_pct ,99999)
FROM employees
WHERE department_id in (80, 90);

*Profe no supe como renombrar las columnas

Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. Oracle y Java son marcas comerciales registradas de Oracle y sus filiales. Todos los demás nombres pueden ser
marcas comerciales de sus respectivos propietarios.

También podría gustarte