--------------------------------------------------------------------------------
--PRÁCTICA MÓDULO 4
--PRESENTADO POR ANGEL ABDÍAS GONZÁLEZ MOLINA
-------------------------------------------------------------------------------
-- 4.1 Práctica Primer parte
------------------------------------------------------------------------------
-- Consultas práctica previas
-------------------------------------------------------------------------------
-- La función Lower() convierte todo el contenido del campo en minúsculas
-- la función Upper() convierte todo el contenido del campo en mayúsculas
-- la funcion INITCAP() en sql convierte el texto a formato de título, es decir:
-- Primera letra de cada palabra en mayúscula, y las demás en minúscula.
--SUBSTR(cadena, posición_inicio, cantidad_caracteres)
-- esta extrae los caracteres de un texto.
-- la funcion LPAD() rellena una cadena por la izquierda. Significa left PAD.
-- La funcion RPAD() rellena una cadena por la derecha. Significa Right PAD.
-- ROUND() sirve para redondear números a una cantidad específica de decimales y
posiciones enteras
-- ROUND(NÚMERO, POSICIÓN)
-- TRIM() elimina espacios en blanco, se utiliza para limpiar datos
--TRUNC(NÚMERO,POSICIÓN)-- CORTA(TRUNCA) el número sin redondear, elimina los
dígitos
--después de la posición indicada.
SELECT
TRUNC(45.923, 2), -- A-- 45.92
TRUNC(45.923, 0), -- B -- deja solo la parte entera 45
TRUNC(45.923, -1), -- C -- deja la decena que esta al correr la coma una
posicion a la izquierda 40
TRUNC(345.923, -2), -- D --300
TRUNC(355.923, -2) -- E --300
FROM DUAL;
select * from [Link];
select last_name, upper(last_name)
from [Link]
where upper(last_name) like '%H%';
/*1) Consultar employee_id, apellido y nombre, ambos en mayúscula, de los empleados
que pertenezcan al departamento 90:
*/
select * from [Link];
select employee_id,upper(last_name), upper(first_name),department_id
from [Link]
where department_id = 90;
/*2) Consultar el job_id, el job_id en minúscula, job_title y el job_title en
minúscula de
la tabla de jobs :
*/
select job_id, lower(job_id),job_title,lower(job_title)
from [Link];
/*3) Obtener una lista de los empleados(apellido y nombre) cuyo nombre contenga la
cadena "li" independientemente de que dicha cadena esté en mayúsculas,
minúsculas o sea una combinación de ambas :
*/
SELECT * FROM [Link];
select last_name,first_name
from [Link]
where lower(first_name)like '%li%';
-------------------------------------------------------------------------------
-- 4.2 Práctica Segunda parte
------------------------------------------------------------------------------
/*1) Consultar nombre, apellido, el primer carácter del nombre y los primeros 5
caracteres del apellido de los empleados pertenecientes al departamento 90
*/
select
first_name,
last_name,
substr(first_name,1,1) as first_char_name,
substr(last_name,1,5) as first_char_name
from [Link]
where department_id=90;
/*2) Seleccionar apellido, salario, mostrar el salario completando hasta 10
caracteres * a
la izquierda:
*/
select
last_name,
salary,
lpad(salary,10,'*') as padded_salary -- salario inflado
from [Link];
-------------------------------------------------------------------------------
-- 4.3 Práctica Tercera parte
------------------------------------------------------------------------------
/*1) Ejecutar la siguiente select e interpretar el funcionamiento de la función
ROUND:
SELECT ROUND(45.923,2),
ROUND(45.923,0),
ROUND(45.923,-1),
ROUND(345.923,-2),
ROUND(355.923,-2)
FROM DUAL;*/
SELECT ROUND(45.923,2),-- REDONDEA A 2 DECIMALES 45.92
ROUND(45.923,0), -- REDONDEA AL ENTERO MÁS CERCANO 46
ROUND(45.923,-1), -- REDONDEA A LA DECENA MÁS CERCANA 50
ROUND(345.923,-2), -- REDONDEA A LA CENTENA MÁS CERCANA 300
ROUND(355.923,-2) -- REDONDEA A LA CENTENA MÁS CERCANA 400
FROM DUAL;
/*2) Mostrar apellido, salario, y el resto de dividir el salario por 5000 de los
empleados del job_id ='SA_REP':*/
select
last_name,
salary,
salary / 5000 as salario_dividido
from [Link];
-- EN LA SIGUIENTE CONSULTA SE UTILIZA LA FUNCION MOD(DIVIDENDO,DIVISOR) Y RETORNA
EL RESIDUO
select
last_name,
salary,
salary / 5000 as salario_dividido,
MOD(salary , 5000) as RESIDUO_salario_dividido
from [Link];
-------------------------------------------------------------------------------
-- 4.4 Práctica Cuarta parte
------------------------------------------------------------------------------
/*1) Obtenga la lista de empleados que trabajaron más de 100 meses desde la fecha
en
que fueron contratados. Liste el código de empleado, apellido y fecha de
contratación.*/
select * from [Link];
SELECT
employee_id,
last_name,
hire_date,
ROUND(MONTHS_BETWEEN(SYSDATE, hire_date), 1) AS meses_trabajados
FROM
[Link]
WHERE
MONTHS_BETWEEN(SYSDATE, hire_date) > 100;