Diferència entre revisions de la pàgina «M2 - Bases de dades / Exercicis UF2: Llenguatges SQL / Exercicis T2-HR»

De wikiserver
Dreceres ràpides: navegació, cerca
(Es crea la pàgina amb «El departamento de recursos humanos necesita su ayuda para crear algunas consultas. 1) Debido a problemas presupuestarios, el departamento de recursos humanos necesit...».)
 
Línia 10: Línia 10:
 
4 Greenberg  12008
 
4 Greenberg  12008
 
5 Russell    14000
 
5 Russell    14000
 +
...
 
</pre>
 
</pre>
  
Línia 22: Línia 23:
 
Guarde la sentencia SQL como lab_02_03.sql .
 
Guarde la sentencia SQL como lab_02_03.sql .
 
<pre>
 
<pre>
SELECT last_name, salary
+
  LAST_NAME  SALARY
FROM employees
+
  ---------  ------
WHERE salary NOT BETWEEN 5000 AND 12000;
+
1 King       24000
 +
2 Kochhar    17000
 +
3 De Haan    17000
 +
4 Austin      4800
 +
5 Pataballa    4800
 
</pre>
 
</pre>
  
 
4) Cree un informe para mostrar el apellido, ID de cargo y fecha de contratación de los empleados cuyos apellidos sean Matos y Taylor. Ordene la consulta en orden ascendente por fecha de contratación.
 
4) Cree un informe para mostrar el apellido, ID de cargo y fecha de contratación de los empleados cuyos apellidos sean Matos y Taylor. Ordene la consulta en orden ascendente por fecha de contratación.
 
<pre>
 
<pre>
SELECT last_name, job_id, hire_date
+
  LAST_NAME  JOB_ID    HIRE_DATE
FROM employees
+
  ---------  --------  ---------
WHERE last_name IN ('Matos', 'Taylor')
+
1 Taylor    SH_CLERK  24/01/06
ORDER BY hire_date;
+
2 Matos     ST_CLERK  15/03/06
 +
3 Taylor     SA_REP    24/03/06
 
</pre>
 
</pre>
  
 
5) Muestre el apellido y el ID de departamento de todos los empleados de los departamentos 20 o 50 en orden alfabético ascendente por nombre.
 
5) Muestre el apellido y el ID de departamento de todos los empleados de los departamentos 20 o 50 en orden alfabético ascendente por nombre.
 
<pre>
 
<pre>
SELECT last_name, department_id
+
  LAST_NAME  DEPARTAMENT_ID
FROM employees
+
  ---------  --------------
WHERE department_id IN (20, 50)
+
1 Atkinson         50
ORDER BY last_name ASC;
+
2 Bell                 50
 +
3 Bissot                50
 +
4 Bull                 50
 +
5 Cabrio         50
 
</pre>
 
</pre>
  
 
6) Modifique el archivo lab_02_03.sql para mostrar 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 Employee y Monthly Salary, respectivamente. Vuelva a guardar lab_02_03.sql como lab_02_06.sql . Ejecute la sentencia en el archivo lab_02_06.sql .
 
6) Modifique el archivo lab_02_03.sql para mostrar 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 Employee y Monthly Salary, respectivamente. Vuelva a guardar lab_02_03.sql como lab_02_06.sql . Ejecute la sentencia en el archivo lab_02_06.sql .
 
<pre>
 
<pre>
SELECT last_name "Employee", salary "Monthly Salary"
+
  Employee Monthly Salary
FROM employees
+
  --------  --------------
WHERE salary BETWEEN 5000 AND 12000
+
1 Weiss               8000
AND department_id IN (20, 50);
+
2 Fripp              8200
 +
3 Kaufling       7900
 +
4 Vollman       6500
 +
5 Mourgos       5800
 +
6 Fay               6000
 
</pre>
 
</pre>
  

Revisió del 19:57, 7 des 2017

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

1) Debido a problemas presupuestarios, el departamento de recursos humanos necesita un informe que muestre el apellido y el salario de los empleados que ganan más de 12.000 dólares. Guarde la sentencia SQL como un archivo denominado lab_02_01.sql. Ejecute la consulta.

  LAST_NAME  SALARY
  ---------  ------
1 King	      24000
2 Kochhar     17000
3 De Haan     17000
4 Greenberg   12008
5 Russell     14000
...

2) Abra una hoja de trabajo de SQL nueva. Cree un informe que muestre el apellido y el número de departamento para el número de empleado 176.

  LAST_NAME  DEPARTAMENT_ID
  ---------  --------------
1 Taylor	         80

3) El departamento de recursos humanos necesita encontrar los empleados con salarios tanto altos como bajos. Modifique lab_02_01.sql para mostrar el apellido y el salario de todos los empleados cuyo salario no esté entre 5.000 y 12.000 dólares. Guarde la sentencia SQL como lab_02_03.sql .

  LAST_NAME  SALARY
  ---------  ------
1 King	      24000
2 Kochhar     17000
3 De Haan     17000
4 Austin       4800
5 Pataballa    4800

4) Cree un informe para mostrar el apellido, ID de cargo y fecha de contratación de los empleados cuyos apellidos sean Matos y Taylor. Ordene la consulta en orden ascendente por fecha de contratación.

  LAST_NAME  JOB_ID    HIRE_DATE
  ---------  --------  ---------
1 Taylor     SH_CLERK  24/01/06
2 Matos      ST_CLERK  15/03/06
3 Taylor     SA_REP    24/03/06

5) Muestre el apellido y el ID de departamento de todos los empleados de los departamentos 20 o 50 en orden alfabético ascendente por nombre.

  LAST_NAME  DEPARTAMENT_ID
  ---------  --------------
1 Atkinson	         50
2 Bell	                 50
3 Bissot                 50
4 Bull	                 50
5 Cabrio	         50

6) Modifique el archivo lab_02_03.sql para mostrar 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 Employee y Monthly Salary, respectivamente. Vuelva a guardar lab_02_03.sql como lab_02_06.sql . Ejecute la sentencia en el archivo lab_02_06.sql .

  Employee  Monthly Salary
  --------  --------------
1 Weiss	              8000
2 Fripp               8200
3 Kaufling	      7900
4 Vollman	      6500
5 Mourgos	      5800
6 Fay	              6000

7) El departamento de recursos humanos necesita un informe que muestre el apellido y la fecha de contratación de todos los empleados contratados durante el año 1994.

SELECT last_name, hire_date
FROM employees
WHERE hire_date LIKE '%94';

8) Cree un informe para mostrar el apellido y el puesto de todos los empleados que no tienen un supervisor.

SELECT last_name, job_id
FROM employees
WHERE manager_id IS NULL;

9) Cree un informe para mostrar el apellido, salario y comisión de todos los empleados que perciben comisiones. Ordene los datos en orden descendente de salario y comisiones. Utilice la posición numérica de la columna en la cláusula ORDER BY .

SELECT last_name, salary, commission_pct
FROM employees
WHERE commission_pct IS NOT NULL
ORDER BY 2 DESC, 3 DESC;

10) Los miembros del departamento de recursos humanos desean tener más flexibilidad con las consultas que está creando. Les gustaría tener un informe que muestre el apellido y el salario de los empleados que ganen más de una cantidad especificada por el usuario después de una solicitud. (Puede utilizar la consulta creada en el ejercicio práctico 1 y modificarla). Guarde esta consulta en un archivo denominado lab_02_10.sql .

SELECT last_name, salary
FROM employees
WHERE 
salary > &sal_amt;

Introduzca 12000 cuando se le solicite un valor en un cuadro de diálogo. Haga clic en OK.

Diàleg

11) El departamento de recursos humanos desea ejecutar informes basados en un supervisor. Cree una consulta que solicite al usuario un ID de supervisor y genere el ID de empleado, apellido, salario y departamento de los empleados de ese supervisor. El departamento de recursos humanos desea ordenar el informe en una columna seleccionada. Puede probar los datos con los siguientes valores:

manager _id = 103, ordenado por last_name
manager_id = 201, ordenado por salary
manager_id = 124, ordenado por employee_id
SELECT employee_id, last_name, salary, department_id
FROM employees
WHERE manager_id = &mgr_num
ORDER BY &order_col;

Si tiene tiempo, realice los siguientes ejercicios:

12) Muestre todos los apellidos de los empleados cuya tercera letra sea una "a".

SELECT last_name
FROM employees
WHERE last_name LIKE '__a%';

13) Muestre los apellidos de los empleados que tengan una "a" y una "e" en su apellido.

SELECT last_name
FROM employees
WHERE last_name LIKE '%a%'
AND last_name LIKE '%e%';

Si desea superarse a sí mismo, complete los siguientes ejercicios:

14) Muestre el apellido, cargo y salario de todos los empleados que sean vendedores u oficinistas en el departamento de stock y cuyo salario no sea igual que 2.500, 3.500 o 7.000 dólares.

SELECT last_name, job_id, salary
FROM employees
WHERE job_id IN ('SA_REP', 'ST_CLERK')
AND salary NOT IN (2500, 3500, 7000);

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

SELECT last_name "Employee", salary "Monthly Salary",
       commission_pct
FROM employees
WHERE commission_pct = .20;