-- EJERCICIO 0. Obtén todos los empleados.
SELECT * FROM HR.EMPLOYEES;

-- EJERCICIO 0.1 Obtén el id de todos los empleados. (OJO únicamente el ID)
-- SELECT * FROM EMPLOYEE_ID; ¡ERROR!.
SELECT EMPLOYEE_ID FROM HR.EMPLOYEES;

-- EJERCICIO 0.2 Obtén el [id, el nombre y el apellido] de todos los empleados.
-- SELECT pepito, juanito, alvaro, andres FROM HR.EMPLOYEES; --SENTENCIA DE EJEMPLO.
SELECT EMPLOYEE_ID,FIRST_NAME, LAST_NAME FROM HR.EMPLOYEES;

-- EJERCICIO 0.3 Obtén el [id, el nombre y el apellido] Y ¡RENOMBRA LAS COLUMNAS! de todos los empleados.
SELECT EMPLOYEE_ID as "ID",FIRST_NAME as "NOMBRE", LAST_NAME AS "APELLIDO" FROM HR.EMPLOYEES;

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

-- EJERCICIO 0.4 Obten los empleados que tengan como nombre 'Steven'.
SELECT * FROM HR.EMPLOYEES WHERE FIRST_NAME='Steven';

-- EJERCICIO 0.5 Obtén los empleados que tengan un salario superior a 5000
SELECT * FROM HR.EMPLOYEES WHERE SALARY>5000;

-- EJERCICIO 0.6 Obtén los empleados que tengan un salario igual o inferior a 3000
SELECT * FROM HR.EMPLOYEES WHERE SALARY<=3000;

-- EJERCICIO 0.7 Obtén el id de empleado, nombre, apellido y fecha de contratación de aquellos empleados que tengan un id mayor que 180.
SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME, HIRE_DATE FROM HR.EMPLOYEES WHERE EMPLOYEE_ID>180;

-- EJERCICIO 0.8 Obtén los empleados que tengan un salario superior a 5.000 Y ADEMÁS su JOB_ID sea igual a IT_PROG.
-- AND [EQUIVALENTE] &&

-- SELECT * FROM HR.EMPLOYEES WHERE SALARY>5000 AND JOB_ID=IT_PROG; ERROR

-- Aclaración un valor es como un literal siempre tiene que ir entre comillado, sino, entiende que se trata de una columna,
-- de forma similar en programación ocurre cuando diferencia variable y literal.

SELECT * FROM HR.EMPLOYEES WHERE SALARY>5000 AND JOB_ID='IT_PROG';

-- EJERCICIO 0.8 Obtén los empleados que tengan un salario superior a 5.000 O BIEN su JOB_ID sea igual a IT_PROG.
-- OR [EQUIVALENTE] ||

SELECT * FROM HR.EMPLOYEES WHERE SALARY>5000 OR JOB_ID= 'IT_PROG';

-- EJERCICIO 0.9 Obten el id, nombre y apellido de los empleados que tenga el JOB_ID IT_PROG, un salario superior a 1800 
-- y id de empleado inferior a 107.

SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME FROM HR.EMPLOYEES WHERE JOB_ID= 'IT_PROG' AND SALARY>1800 AND EMPLOYEE_ID<107;

-- EJERCICIO 0.10 Similar al ejercicio anterior, pero renombrando las columnas por la traducción al Español. (First_Name → Nombre)

SELECT EMPLOYEE_ID AS "ID_EMPLEADO", FIRST_NAME AS "NOMBRE", LAST_NAME AS "APELLIDO" FROM HR.EMPLOYEES WHERE JOB_ID= 'IT_PROG' AND SALARY>1800 AND EMPLOYEE_ID<107;

-- Ejercicio 0.11 Muestra todos los empleados que ganen un salario diferente de 9000
SELECT * FROM HR.EMPLOYEES WHERE SALARY <> 9000;

-- Ejercicio 0.12 Muestra todos los empleados que ganen un salario diferente de 9000 y de 8000
SELECT * FROM HR.EMPLOYEES WHERE SALARY <> 9000 AND SALARY <> 8000;

-- Ejercicio 0.13 Muestra todos los empleados que ganen un salario diferente de 9000,8000,7.500,5000
SELECT * FROM HR.EMPLOYEES WHERE SALARY <> 9000 AND SALARY <> 8000 AND SALARY <> 7500 AND SALARY <> 5000;

-- Ejercicio 0.13.1 Muestra todos los empleados que ganen un salario igual de 9000,8000,7.500,5000,3000,2100
SELECT * FROM HR.EMPLOYEES WHERE SALARY IN (9000,8000,7500,5000,3000,2100);

-- Ejercicio 0.14 Muestra todos los empleados tegan comisión. (ES DECIR, QUE LA COMISIÓN NO SEA NULA).
SELECT * FROM HR.EMPLOYEES WHERE COMMISSION_PCT IS NOT NULL; --EJERCICIO BONUS.

-- Ejercicio 0.15 Muestra aquellso empleados donde el salario sea mayor que 2.000 y la comissión sea nula.
SELECT * FROM HR.EMPLOYEES WHERE SALARY > 2000 AND COMMISSION_PCT IS NULL;

-- Ejercicio 0.16 Muestra todos los empleados que tengan un salario entre 6.000 y 9.000.
-- SELECT * FROM employees WHERE SALARY < 9000 AND SALARY > 6000; --Poco optimizado.
SELECT * FROM HR.EMPLOYEES WHERE SALARY BETWEEN 6000 AND 9000;
----
-- 0.17 Muestra los empleados cuyo nombre empiece por A.
SELECT * FROM employees WHERE first_name LIKE 'A%';
-- Utilizamos '%' para indicar a la consulta que va cualquier cosa (0 o N carácteres).


-- 0.18 Muestra los empleados cuyo apellido termina por e.
SELECT * FROM employees WHERE last_name LIKE '%e';

-- 0.19 Muestra los empleados cuyo apellido contenga una 'w'.
SELECT * FROM employees WHERE last_name LIKE '%w%';

-- 0.20 Muestra los empleados cuyo nombre contenga tengan 3 carácteres y el caracter del medio sea una e.
SELECT * FROM employees WHERE last_name LIKE '_e_';
-- Utilizamos '_' para indicar a la consulta que hay un caracter (Cualquiera que sea).

-- 0.21 Muestra los empleados cuyo apellido contenga tengan 6 carácteres y el caracter inicial sea A y el final n.
SELECT * FROM employees WHERE last_name LIKE 'A____n';

-- Bloque 1.

-- 1.1 Muestra el id, nombre, apellido de los empleados, salario y trabajo de los empleados que, ganen entre 2000 y 8000, su nombre contenga una A, el apellido contenga una S, y el job_id contenga una I, además excluye los id, 150,151,152,153 y 154 y aquellos donde la comisión sea nula. 
SELECT employee_id, first_name, last_name, salary, job_id FROM employees WHERE salary BETWEEN  2000 and 8000 and first_name LIKE '%a%' and last_name LIKE '%s%' and job_id LIKE '%i%' and employee_id not in (150,151,152,153,154) and commission_pct is null;

-- 1.2 Muestra únicamente el salario y nombre de aquellos empleados que tengan dos 'a' y su salario sea superior a 2000.
SELECT salary, first_name FROM employees WHERE first_name LIKE '%a%a%' and salary>2000;

-- 1.3 Muestra el nombre y salario de todos los empleados que su nombre empiece por A, E o I.
SELECT first_name, salary FROM employees WHERE first_name like 'A%' or first_name like 'E%' or first_name LIKE 'I%'; 

-- 1.4 Muestra el id, nombre, apellido, salario y fecha de contratación (El nombre de la columna debe aparecer en Español, y tal como se expone en el enunciado), y como condiciones: Tenga un salario entre 3000 y 10000, su nombre contenga una 'e', pero no una 'a', su apellido empieze por 'K' o 'M', su job_id contenga 'MAN' o 'CLERK', su id esté entre 150 y 180, y fueron contratados después del 1 de enero de 1999.
 SELECT employee_id as "id", first_name as "Nombre", last_name as "Apellido", salary as "Salario", hire_date as "Fecha de contratación" FROM employees WHERE salary BETWEEN 3000 and 10000 and first_name like '%e%' and first_name not like '%a%' and last_name like 'k%' or last_name like 'M%' and job_id like '%man%' or job_id like '%clerk%' and employee_id  BETWEEN 150 and 180 and hire_date > '1999-01-01';

  -- 1.5 Muestra el id, nombre, apellido, salario y departamento de los empleados que tengan un salario mayor a 4000 o tengan comisión, su nombre tenga exáctamente 3 letras donde la letra final sea 'n' o 'm', su apellido al menos tenga 1 vocal al menos, pertenece a los departamentos 30, 50 o 80 y su job id no sea 'IT_PROG' ni 'AD_VP'.
 SELECT employee_id, first_name, last_name, salary, department_id from employees where (salary > 4000 or commission_pct is not null) and (first_name like '__n' or first_name like '__m') and (last_name like'%a%' or last_name like '%e%' or last_name like '%i%' or last_name like '%o%' or last_name like '%u%') and department_id in (30,50,80) and job_id <> "IT_PROG" and job_id <> "AD_VP"; 