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

De wikiserver
Dreceres ràpides: navegació, cerca
(Es crea la pàgina amb «1) Escriba una consulta para mostrar la fecha del sistema. Etiquete la columna como Date. '''Nota:''' si la base de datos se ubica de forma remota en una zona horaria...».)
 
Línia 38: Línia 38:
 
5) Escriba una consulta que muestre el apellido (con la primera letra en mayúsculas y el resto en minúsculas) y la longitud del apellido de todos los empleados cuyos nombres empiecen por las letras "J", "A" o "M". Proporcione a cada columna una etiqueta adecuada. Ordene los resultados por el apellido de los empleados.
 
5) Escriba una consulta que muestre el apellido (con la primera letra en mayúsculas y el resto en minúsculas) y la longitud del apellido de todos los empleados cuyos nombres empiecen por las letras "J", "A" o "M". Proporcione a cada columna una etiqueta adecuada. Ordene los resultados por el apellido de los empleados.
 
<pre>
 
<pre>
SELECT INITCAP(last_name) "Name", LENGTH(last_name) "Length"
+
  Name     Length
FROM employees
+
  --------  ------
WHERE UPPER(last_name) LIKE 'J%'
+
1 Abel         4
      OR last_name LIKE 'M%'
+
2 Ande         4
      OR last_name LIKE 'A%'
+
3 Atkinson 8
ORDER BY last_name;
+
4 Austin 6
</pre>
+
5 Johnson 7
o
+
...
<pre>
 
SELECT INITCAP(last_name) "Name", LENGTH(last_name) "Length"
 
FROM employees
 
WHERE UPPER(SUBSTR(last_name,1,1)) IN ('J','M','A')
 
ORDER BY last_name;
 
 
</pre>
 
</pre>
  
 
Vuelva a escribir la consulta para que se le solicite al usuario que introduzca la letra por la que empieza el apellido. Por ejemplo, si el usuario introduce H (en mayúscula) cuando se le solicita que introduzca una letra, la salida debe mostrar a todos los empleados cuyos apellidos empiecen por la letra "H"
 
Vuelva a escribir la consulta para que se le solicite al usuario que introduzca la letra por la que empieza el apellido. Por ejemplo, si el usuario introduce H (en mayúscula) cuando se le solicita que introduzca una letra, la salida debe mostrar a todos los empleados cuyos apellidos empiecen por la letra "H"
 
<pre>
 
<pre>
SELECT INITCAP(last_name) "Name", LENGTH(last_name) "Length"
+
  Name     Length
FROM employees
+
  --------  ------
WHERE last_name LIKE '&start_letter%'
+
1 Hall         4
ORDER BY last_name;
+
2 Hartstein 9
 +
3 Higgins 7
 +
4 Himuro 6
 +
5 Hunold 6
 +
6 Hutton 6
 +
...
 
</pre>
 
</pre>
  

Revisió del 12:19, 8 des 2017

1) Escriba una consulta para mostrar la fecha del sistema. Etiquete la columna como Date.

Nota: si la base de datos se ubica de forma remota en una zona horaria diferente, la salida será la fecha del sistema operativo en el que reside la base de datos.

  Date
  ----
1 08/12/17

2) El departamento de recursos humanos necesita un informe que muestre el número de empleado, apellido, salario y salario aumentado en un 15,5% (expresado como número entero) para cada empleado. Etiquete la columna como New Salary.

Guarde la sentencia SQL en un archivo denominado lab_03_02.sql.

3) Ejecute la consulta en el archivo lab_03_02.sql.

  EMPLOYEE_ID  LAST_NAME  SALARY  New Salary
  -----------  ---------  ------  ----------
1         100  King	   24000       27720
2         101  Kochhar	   17000       19635
3         102  De Haan	   17000       19635
4         103  Hunold	    9000       10395
5         104  Ernst	    6000        6930
...

4) Modifique la consulta lab_03_02.sql para agregar una columna que reste el salario antiguo del nuevo. Etiquete la columna como Increase. Guarde el contenido del archivo como lab_03_04.sql. Ejecute la consulta revisada.

  EMPLOYEE_ID  LAST_NAME  SALARY  New Salary  Increase
  -----------  ---------  ------  ----------  --------
1         100  King	   24000       27720      3720
2         101  Kochhar	   17000       19635      2635
3         102  De Haan	   17000       19635      2635
4         103  Hunold	    9000       10395      1395
5         104  Ernst	    6000        6930       930
...

5) Escriba una consulta que muestre el apellido (con la primera letra en mayúsculas y el resto en minúsculas) y la longitud del apellido de todos los empleados cuyos nombres empiecen por las letras "J", "A" o "M". Proporcione a cada columna una etiqueta adecuada. Ordene los resultados por el apellido de los empleados.

  Name      Length
  --------  ------
1 Abel	         4
2 Ande	         4
3 Atkinson	 8
4 Austin	 6
5 Johnson	 7
...

Vuelva a escribir la consulta para que se le solicite al usuario que introduzca la letra por la que empieza el apellido. Por ejemplo, si el usuario introduce H (en mayúscula) cuando se le solicita que introduzca una letra, la salida debe mostrar a todos los empleados cuyos apellidos empiecen por la letra "H"

  Name      Length
  --------  ------
1 Hall	         4
2 Hartstein	 9
3 Higgins	 7
4 Himuro	 6
5 Hunold	 6
6 Hutton	 6
...

Modifique la consulta de forma que la mayúscula/minúscula de la letra introducida no afecte a la salida. La letra introducida debe estar en mayúscula antes de que la procese la consulta SELECT.

SELECT INITCAP(last_name) "Name", LENGTH(last_name) "Length"
FROM employees
WHERE last_name LIKE UPPER('&start_letter%' )
ORDER BY last_name;

6) El departamento de recursos humanos desea buscar la duración del contrato de cada empleado. Para cada empleado, muestre el apellido y calcule el número de meses entre el día de hoy y la fecha de contratación del empleado. Etiquete la columna como MONTHS_WORKED. Ordene los resultados por el número de meses durante los que ha trabajado. Redondee el número de meses hasta el número entero más cercano.

Nota: debido a que esta consulta depende de la fecha de ejecución, los valores de la columna MONTHS_WORKED serán diferentes.

SELECT last_name, ROUND(MONTHS_BETWEEN(SYSDATE, hire_date)) MONTHS_WORKED
FROM employees
ORDER BY months_worked;

Si tiene tiempo, realice los siguientes ejercicios:

7) Cree una consulta para mostrar el apellido y el salario de todos los empleados. Formatee el salario para que tenga 15 caracteres de longitud y tenga un relleno hacia la izquierda con el símbolo $. Etiquete la columna como SALARY.

SELECT last_name, LPAD(salary, 15, '$') SALARY
FROM employees;

8) Cree una consulta que muestre los primeros ocho caracteres de los apellidos de los empleados y que indique las cantidades de sus salarios con asteriscos. Cada asterisco significa mil dólares. Ordene los datos en orden descendente de salarios. Etiquete la columna EMPLOYEES_AND_THEIR_SALARIES.

SELECT rpad(last_name, 8)||' '|| rpad(' ', salary/1000+1, '*') EMPLOYEES_AND_THEIR_SALARIES
FROM employees
ORDER BY salary DESC;

9) Cree una consulta para mostrar el apellido y el número de semanas durante las que han trabajado todos los empleados del departamento 90. Etiquete la columna de número de semanas como TENURE. Trunque el valor del número de semana en 0 decimales. Muestre los registros en orden descendente de antigüedad del empleado.

Nota: el valor TENURE variará ya que depende de la fecha de ejecución de la consulta.

SELECT last_name, trunc((SYSDATE-hire_date)/7) AS TENURE
FROM employees
WHERE department_id = 90
ORDER BY TENURE DESC;