0% encontró este documento útil (0 votos)
181 vistas

SQL

Este documento contiene 14 consultas SQL propuestas para el departamento de recursos humanos. Las consultas buscan y resumen datos de empleados como apellidos, salarios, números de departamento, fechas de contratación y más, utilizando funciones como SELECT, FROM, WHERE, GROUP BY, ORDER BY, MAX, MIN, AVG y COUNT.

Cargado por

Jonathan Samame
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
181 vistas

SQL

Este documento contiene 14 consultas SQL propuestas para el departamento de recursos humanos. Las consultas buscan y resumen datos de empleados como apellidos, salarios, números de departamento, fechas de contratación y más, utilizando funciones como SELECT, FROM, WHERE, GROUP BY, ORDER BY, MAX, MIN, AVG y COUNT.

Cargado por

Jonathan Samame
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 22

1

Práctica 2

El departamento de recursos humanos necesita su ayuda para crear algunas consultas.

1. Por motivos presupuestarios, el departamento de recursos humanos necesita un


informe que muestre los apellidos y el salario de los empleados que ganen más de
12.000 dólares.

La sentencia SQL:

SELECT LAST_NAME, SALARY FROM EMPLOYEES WHERE SALARY >12000;

2. Cree un informe que muestre el apellido del empleado y el número de departamento del
empleado número 176.

La sentencia SQL:
2

SELECT LAST_NAME, DEPARTMENT_ID FROM EMPLOYEES WHERE


EMPLOYEE_ID = 176;

3. El departamento de recursos humanos necesita buscar los empleados con salarios altos
y bajos. Modifique lab_02_01.sql para mostrar el apellido y el salario de cualquier
empleado cuyo salario no está en el rango de 5.000 a 12.000 dólares.

La sentencia SQL:

SELECT LAST_NAME, SALARY FROM EMPLOYEES WHERE SALARY NOT BETWEEN


5000 AND 12000; 
3

4. Cree un informe para mostrar el apellido, el identificador de puesto y la fecha de inicio


para los empleados con los apellidos Matos y Taylor. Ordene la consulta por orden
ascendente por fecha de inicio.

La sentencia SQL:

SELECT LAST_NAME, JOB_ID, HIRE_DATE FROM EMPLOYEES WHERE


LAST_NAME = ‘Matos’ OR IN ('Matos','Taylor') ORDER BY HIRE_DATE;
4

5. Muestre el apellido y el número de departamento de todos los empleados de los


departamentos 20 y 50 en orden alfabético ascendente por nombre.

La sentencia SQL:

SELECT LAST_NAME, DEPARTMENT_ID FROM EMPLOYEES WHERE


DEPARTMENT_ID BETWEEN 20 AND 50 ORDER BY LAST_NAME;
5

6. Modifique lab_02_03.sql para enumerar el apellido y el salario de los empleados que


ganan entre 5.000 y 12.000 dólares y están en el departamento 20 o 50. Etiquete las
columnas como Employee y Monthly Salary, respectivamente. Vuelva a guardar
lab_02_03.sql como lab_02_06.sql. Ejecute la sentencia en lab_02_06.sql.

La sentencia SQL:

SELECT LAST_NAME AS "Employee", SALARY AS "Monthly Salary" FROM


EMPLOYEES WHERE SALARY BETWEEN 5000 AND 12000 AND DEPARTMENT_ID IN
(20,50);

7. El departamento de recursos humanos necesita un informe que muestre el apellido y la


fecha de contratación de todos los empleados contratados en 1994.

La sentencia SQL:

SELECT LAST_NAME, HIRE_DATE FROM EMPLOYEES WHERE HIRE_DATE LIKE


'%94';
6

- Podemos encontrar datos a partir del 2001:

8. Cree un informe que muestre el apellido y el cargo de todos los empleados que no
tengan supervisor.

La sentencia SQL:

SELECT LAST_NAME, JOB_ID FROM EMPLOYEES WHERE MANAGER_ID IS NULL;

9. Cree un informe que muestre el apellido, el salario y la comisión de todos los empleados
que ganen comisiones. Ordene los datos en orden descendente por salario y
comisiones.

La sentencia SQL:
7

SELECT LAST_NAME, SALARY, COMMISSION_PCT FROM EMPLOYEES WHERE


COMMISSION_PCT IS NOT NULL ORDER BY SALARY DESC, COMMISSION_PCT DESC;

10. Los miembros del departamento de recursos humanos desean tener más flexibilidad
con las consultas que está creando. Quieren un informe que muestre el apellido y el
salario de empleados que ganen más que una cantidad que el usuario especificará tras
un prompt. (Puede utilizar la consulta que creó en el ejercicio de la Práctica 1 y
modificarla.) Guarde esta consulta en un archivo denominado lab_02_10.sql. Si
introduce 12.000 cuando aparezca el prompt, el informe mostrará estos resultados:
8

La sentencia SQL:

SELECT LAST_NAME, SALARYFROM EMPLOYEESWHERE SALARY>12000

11. El departamento de recursos humanos quiere ejecutar informes basados en un


supervisor. Cree una consulta que pida al usuario un identificador de supervisor y
genere el identificador de empleado, el apellido, el salario y el departamento de los
empleados de ese supervisor. El departamento de recursos humanos quiere poder
ordenar el informe por una columna seleccionada. Puede probar los datos con estos
valores:
manager ID = 103, ordenado por apellido de empleado:
manager ID = 201, ordenado por salario:
manager ID = 124, ordenado por identificador de empleado:

La sentencia SQL:
9

SELECT EMPLOYEE_ID, LAST_NAME, SALARY, DEPARTMENT_ID FROM


EMPLOYEES WHERE MANAGER_ID = 103 ORDER BY LAST_NAME;

SELECT EMPLOYEE_ID, LAST_NAME, SALARY, DEPARTMENT_ID FROM


EMPLOYEES WHERE MANAGER_ID = 201 ORDER BY LAST_NAME;
10

SELECT EMPLOYEE_ID, LAST_NAME, SALARY, DEPARTMENT_ID FROM


EMPLOYEES WHERE MANAGER_ID = 124 ORDER BY LAST_NAME;

12. Muestre el apellido de todos los empleados cuya tercera letra sea la a.

La sentencia SQL:
11

SELECT LAST_NAME FROM EMPLOYEES WHERE LAST_NAME LIKE '__a%';

13. Muestre el apellido de todos los empleados que tengan tanto una a como una e en su
apellido.

La sentencia SQL:

SELECT LAST_NAME FROM EMPLOYEES WHERE LAST_NAME LIKE ('%a%') AND


LAST_NAME LIKE ('%e%');
12

Si desea afrontar un desafío mayor, realice estos ejercicios:

14. Muestre el apellido, el puesto de trabajo y el salario de todos los empleados que sean
representante de ventas o administrativo y cuyo salario sea distinto de 2.500, 3.500 ó
7.000 dólares.

La sentencia SQL:

SELECT LAST_NAME, JOB_ID, SALARY FROM EMPLOYEES WHERE SALARY NOT


IN (2500,3500,7000) AND JOB_ID IN ('SA_REP','ST_CLERK');
13

15. Modifique lab_02_06.sql para mostrar el apellido, el salario y la comisión de todos los
empleados cuyo importe de comisión sea del 20 %. Vuelva a guardar lab_02_ 06.sql
como lab_02_15.sql. Vuelva a ejecutar la sentencia en lab_02_15.sql.

La sentencia SQL:

SELECT LAST_NAME AS "Employee", SALARY AS "Monthly Salary",


COMMISSION_PCT FROM EMPLOYEES WHERE COMMISSION_PCT = 0.2;
14

Práctica 4

Determine la validez de las tres siguientes afirmaciones. Seleccione Verdadero o Falso.

1. Las funciones de grupo trabajan a través de muchas filas para generar un resultado.

- Verdadero

2. Las funciones de grupo incluyen valores nulos en los cálculos.

- Falso

3. La cláusula WHERE restringe las filas antes de incluirlas en un cálculo de grupo.

-Verdadero

El departamento de recursos humanos necesita estos informes:

4. Busque el salario más alto, el más bajo, la suma y el salario medio de todos los

empleados. Etiquete las columnas como Maximum, Minimum, Sum y Average,

respectivamente. Redondee los resultados al siguiente número entero. Guarde la

sentencia SQL en un archivo de texto denominado lab_04_04.sql.


15

La sentencia SQL:

SELECT ROUND(MAX(SALARY),0) "Maximum",

ROUND(MIN(SALARY),0) "Minimum",

ROUND(SUM(SALARY),0) "Sum",

ROUND(AVG(SALARY),0) "Average"

FROM EMPLOYEES;

5. Modifique la consulta en lab_04_04.sql para mostrar el salario mínimo, el máximo, la suma y


el salario medio para cada tipo de trabajo. Vuelva a guardar lab_04_04.sql como lab_04_05.sql.
Ejecute la sentencia en lab_04_05.sql.

La sentencia SQL:

SELECT JOB_ID, ROUND(MAX(SALARY),0) "Maximum",

ROUND(MIN(SALARY),0) "Minimum",

ROUND(SUM(salary),0) "Sum",
16

ROUND(AVG(salary),0) "Average"

FROM employees

GROUP BY job_id;

6. Escriba una consulta para mostrar el número de personas con el mismo puesto.

La sentencia SQL:

SELECT JOB_ID, COUNT(*)


17

FROM EMPLOYEES

GROUP BY JOB_ID;

7. Determine el número de supervisores sin listarlos. Etiquete la columna como Number of


Managers. Indicación: Utilice la columna MANAGER_ID para determinar el número de
supervisores.

La sentencia SQL:

SELECT COUNT (DISTINCT MANAGER_ID) "NUMBER OF MANAGERS"

FROM EMPLOYEES;
18

8. Busque la diferencia entre el salario más alto y el más bajo. Etiquete la columna como
DIFFERENCE.

La sentencia SQL:

SELECT MAX (SALARY) - MIN(SALARY) DIFFERENCE

FROM EMPLOYEES;
19

Si le queda tiempo, realice los siguientes ejercicios:

9. Cree un informe para mostrar el número de supervisor y el salario del empleado peor pagado
de ese supervisor. Excluya a los empleados cuyo supervisor no se conozca. Excluya los grupos
en los que el salario mínimo sea 6.000 dólares o menos. Clasifique la salida en orden
descendente de salario.

La sentencia SQL:

SELECT MANAGER_ID, MIN (SALARY)

FROM EMPLOYEES

WHERE MANAGER_ID IS NOT NULL

GROUP BY MANAGER_ID

HAVING MIN (SALARY) > 6000

ORDER BY MIN (SALARY) DESC;


20

Si desea afrontar un desafío mayor, realice estos ejercicios:

10. Cree una consulta que muestre el número total de empleados y, de dicho total, el número
de empleados contratados en 1995, 1996, 1997 y 1998. Cree las cabeceras de columna
adecuadas.

La sentencia SQL:

SELECT COUNT (*) TOTAL,

SUM (DECODE (TO_CHAR (HIRE_DATE,'YYYY'),2005,1,0))"2005",

SUM (DECODE (TO_CHAR (HIRE_DATE,'YYYY'),2006,1,0))"2006",

SUM (DECODE (TO_CHAR (HIRE_DATE,'YYYY'),2007,1,0))"2007",

SUM (DECODE (TO_CHAR (HIRE_DATE,'YYYY'),2008,1,0))"2008"

FROM EMPLOYEES;
21

11. Cree una consulta de matriz para mostrar el trabajo, el salario de dicho puesto basado en el
número de departamento y el salario total de ese puesto de los departamentos 20, 50, 80 y 90,
y proporcione una cabecera apropiada a cada columna.

La sentencia SQL:

SELECT JOB_ID "JOB",

SUM(DECODE(DEPARTMENT_ID, 20, SALARY)) "DEPT 20",

SUM(DECODE(DEPARTMENT_ID, 50, SALARY)) "DEPT 50",

SUM(DECODE(DEPARTMENT_ID, 80, SALARY)) "DEPT 80",

SUM(DECODE(DEPARTMENT_ID, 90, SALARY)) "DEPT 90",

SUM(SALARY) "TOTAL"

FROM EMPLOYEES

GROUP BY JOB_ID;
22

También podría gustarte