Base de datos y Sentencias SQL
Enviado por ElizaSesh • 7 de Julio de 2022 • Tarea • 1.346 Palabras (6 Páginas) • 418 Visitas
/*a. Obtener todos los códigos de trabajo únicos (no repetidos) de la tabla Empleados*/
select distinct employee_id from employees;
/*b. Obtener una columna que almacene el nombre y apellido de los empleados cuyo
salario no esté en el rango de $10000 y $16000 que muestre el apellido, id del trabajo y fecha de
contratación de los empleados cuyos apellidos son Matos y Taylor. Ordenar el
resultado de forma descendente de acuerdo a la fecha de contratación*/
select first_name||' '||last_name as "NOMBRE COMPLETO", salary, job_id, hire_date from employees where last_name in('Matos','Taylor') and salary>10000 and salary<16000 order by hire_date desc;
/*c. Mostrar el apellido y el id del trabajo de los empleados que no tienen asignado un jefe.*/
select last_name, job_id from employees where manager_id is null;
/*d. Mostrar los apellidos de los empleados cuyos apellidos tengan como tercera letra
la “a” y también contengan la letra “e”*/
SELECT LAST_NAME FROM EMPLOYEES WHERE LAST_NAME LIKE '__a%'AND LAST_NAME LIKE '%e%';
/*e. Mostrar el apellido, id del trabajo y salario de los empleados cuyo id del trabajo es
SALES REPRESENTATIVE (SA_REP) o STOCK CLERK (ST_CLERK) y cuyo salario no sea
igual a $2500, $3500, o $7000.*/
SELECT LAST_NAME, JOB_ID, SALARY FROM EMPLOYEES WHERE JOB_ID IN ('SA_REP', 'ST_CLERK') AND SALARY<>2500 AND SALARY<>3500 AND SALARY<>7000;
/*f. Obtener el id del empleado, apellido, salario y salario incrementado. Este último es
un campo calculado que es la suma del salario actual más el 15.5%. Etiquete esta
última columna como INCREMENTO.*/
SELECT EMPLOYEE_ID, LAST_NAME, SALARY, SALARY*0.155+SALARY AS INCREMENTO FROM hr.EMPLOYEES;
/*4. Utilizando SQL*PLUS realice las siguientes consultas por medio del uso de funciones de
agregado: */
/*a. Realice una consulta que muestre solo los nombres de los empleados que se
repiten.*/
SELECT FIRST_NAME, COUNT(*) FROM EMPLOYEES GROUP BY FIRST_NAME HAVING COUNT(*)>1;
/*b. Realice una consulta que muestre el número de países por región ordenando el
resultado por el número de región que tenga mayor número de países.*/
SELECT R.REGION_NAME AS "REGION", COUNT(*) AS "PAISES" FROM COUNTRIES C JOIN REGIONS R ON C.REGION_ID=R.REGION_ID GROUP BY R.REGION_NAME HAVING COUNT(*)>1 ORDER BY COUNT(*) DESC;
/*c. Elabore una consulta que muestre el código del departamento con título “Código
del Departamento”, que cuente los empleados por departamento de aquellos que
departamentos que tengan más de 10 empleados.
*/
SELECT DEPARTMENT_ID AS "CODIGO DE DEPARTAMENTO", COUNT(EMPLOYEE_ID) FROM EMPLOYEES GROUP BY DEPARTMENT_ID HAVING COUNT(EMPLOYEE_ID)>10;
/*d. Visualizar el id del jefe y el salario del empleado a su cargo que tenga el menor
ingreso. Excluir los empleados que no tengan asignado un jefe y todos los grupos
cuyo salario mínimo sea menor o igual a $6000. Ordenar la salida en orden
descendente.*/
SELECT DISTINCT MANAGER_ID, MIN(SALARY), COUNT(MANAGER_ID) FROM EMPLOYEES WHERE MANAGER_ID IS NOT NULL AND SALARY>6000 GROUP BY MANAGER_ID ORDER BY MANAGER_ID DESC;
/*5. Por medio del uso de funciones, realizar las siguientes consultas:*/
/*a. Obtener los nombres y apellidos de los empleados que fueron contratados en el
mes actual (No importa el año).*/
SELECT FIRST_NAME, LAST_NAME FROM EMPLOYEES WHERE EXTRACT(MONTH FROM HIRE_DATE)=11;
/*b. Supongamos que los empleados cuyo apellido es Jones y Fay han sido contratados
por 8 meses. Escriba una consulta que visualice la fecha de salida de la empresa de
dichos empleados. */
SELECT LAST_NAME, ADD_MONTHS(TO_DATE(HIRE_DATE,'DD/MM/YYYY'),8) AS "SALIDA" FROM EMPLOYEES WHERE LAST_NAME IN('Jones', 'Fay');
/*c. Obtener el apellido y número de días que están trabajando en la empresa los
empleados del departamento de Marketing que ganan más de $6000.*/
SELECT LAST_NAME, TRUNC(TO_DATE(SYSDATE,'DD/MM/YYYY'))-TRUNC(HIRE_DATE) AS "DIAS" FROM EMPLOYEES WHERE DEPARTMENT_ID=20 AND SALARY>6000;
/*d. Los empleados con id 101, 200 y 176 han desempeñado más de un cargo en la
empresa. Obtener el número de meses y el cargo que han desempeñado en la
empresa.*/
SELECT J.JOB_TITLE AS "CARGO", TRUNC(MONTHS_BETWEEN(SYSDATE, HIRE_DATE)) AS "MESES" FROM EMPLOYEES E JOIN JOBS J ON J.JOB_ID=E.JOB_ID WHERE EMPLOYEE_ID IN (101,200,176);
/*e. Obtener el id del empleado, apellido, salario y salario incrementado. Este último es
un campo calculado que es la suma del salario actual más el 15.5%. Etiquete esta
última columna como NUEVO SALARIO. Además, obtenga una columna que
muestre el valor del incremento salarial que tenga el nombre de INCREMENTO. Las
columnas NUEVO SALARIO E INCREMENTOS no deben tener decimales.*/
SELECT EMPLOYEE_ID, LAST_NAME, SALARY, ROUND(SALARY+(SALARY*0.155)) AS "NUEVO SALARIO", ROUND(SALARY*0.155) AS "INCREMENTO" FROM EMPLOYEES;
/*f. Asignar un número aleatorio entre 1 y 10 a los empleados del departamento de
Marketing.*/
SELECT LAST_NAME, ROUND(DBMS_RANDOM.VALUE(1, 10)) AS "ALEATORIO" FROM EMPLOYEES WHERE DEPARTMENT_ID=20;
/*g. Elabore una consulta que muestre el nombre y apellido del empleado con título
EMPLEADO, el salario, porcentaje de comisión, la comisión y el salario total.*/
SELECT FIRST_NAME||' '||LAST_NAME AS "EMPLEADO", SALARY, COMMISSION_PCT, SALARY*COMMISSION_PCT AS "COMMISSION", SALARY+(SALARY*COMMISSION_PCT) AS "SALARIO
...