Guia SQL.
Enviado por Daniela Andrea Bustos Aranda • 30 de Marzo de 2016 • Trabajo • 469 Palabras (2 Páginas) • 187 Visitas
1.
- Se ha detectado que dado el trabajo que desempeñan, existen empleados que no les corresponde percibir el mismo salario del empleado 204. Dado esto, se requiere saber la identificación, nombre (nombre y apellido concatenados), trabajo y el salario de estos empleados (incluyendo al empleado 204). La información se debe mostrar como se visualiza en el ejemplo
SELECT EMPLOYEE_ID AS "EMPLEADO", FIRST_NAME ||' '|| LAST_NAME AS "EMPLEADO", JOB_ID, TO_CHAR(SALARY,'$999,999' )AS "SALARIO"
FROM HR.EMPLOYEES
WHERE SALARY = (SELECT SALARY
FROM HR.EMPLOYEES
WHERE EMPLOYEE_ID = 204);
- La empresa desea mejorar la situación económica de los empleados cuyo salario es menor al salario promedio entre todos los empleados. Inicialmente la idea es aumentar los salarios de estos empleados según el tiempo que llevan trabajando en la empresa a la fecha actual (puede ser según los días, meses o años que lleva trabajando). Para ello, se requiere saber nombre, apellido, salario actual, total de días, total de meses y años que llevan contratados los empleados que se encuentran en esta condición. La información se debe mostrar en el formato del ejemplo y ordena en forma ascendente por salario e identificación del empleado (la información que se muestra se obtuvo en Febrero del 2014)
SELECT EMPLOYEE_ID AS "EMPLEADO", TO_CHAR(SALARY, '99,999') AS "SALARIO ACTUAL", TO_CHAR(HIRE_DATE, 'DD/MM/YYYY') AS "FECHA CONTRATO", ROUND(SYSDATE - HIRE_DATE) AS "DIAS TRABAJADOS", ROUND(MONTHS_BETWEEN(SYSDATE,HIRE_DATE)) AS "MESES CONTRATADOS", ROUND(MONTHS_BETWEEN(SYSDATE, HIRE_DATE)/12) AS "AÑOS TRABAJADOS"
FROM HR.EMPLOYEES
WHERE SALARY < (SELECT AVG(SALARY) FROM HR.EMPLOYEES)
ORDER BY SALARY, JOB_ID;
- Dado la gran diferencia en la distribución actual de los empleados en los diferentes departamentos, se efectuará una nueva redistribución con el objetivo de corregir esta situación. Por lo tanto, la primera medida será cambiar algunos empleados del departamento que tenga más empleados. Para ello, se requiere saber el nombre del departamento y el total de empleados del departamento que cumpla con esa condición como se muestra en el ejemplo:
SELECT d.DEPARTMENT_NAME AS "DEPARTAMENTO", COUNT(e.EMPLOYEE_ID) AS "TOTAL DE EMPLEADOS"
FROM HR.EMPLOYEES e JOIN HR.DEPARTMENTS d USING (DEPARTMENT_ID)
GROUP BY d.DEPARTMENT_NAME
HAVING COUNT(e.EMPLOYEE_ID) = (SELECT MAX(COUNT(e.EMPLOYEE_ID))
FROM HR.EMPLOYEES e JOIN HR.DEPARTMENTS d
USING (DEPARTMENT_ID)
GROUP BY d.DEPARTMENT_NAME);
...