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

De wikiserver
Dreceres ràpides: navegació, cerca
 
(Hi ha una revisió intermèdia del mateix usuari que no es mostren)
Línia 53: Línia 53:
  
 
7) Determine el número de gestores sin enumerarlos en una lista. Etiquete la columna como Number of Managers.
 
7) Determine el número de gestores sin enumerarlos en una lista. Etiquete la columna como Number of Managers.
 +
 +
'''Indicación:''' utilice la columna MANAGER_ID para determinar el número de gestores.
 
<pre>
 
<pre>
'''Indicación:''' utilice la columna MANAGER_ID para determinar el número de gestores.
 
 
 
SELECT COUNT(DISTINCT manager_id) "Number of Managers"
 
SELECT COUNT(DISTINCT manager_id) "Number of Managers"
 
FROM employees;
 
FROM employees;
Línia 83: Línia 83:
 
<pre>
 
<pre>
 
SELECT COUNT(*) total,
 
SELECT COUNT(*) total,
       SUM(DECODE(TO_CHAR(hire_date,'YYYY'),1995,1,0))"1995",
+
       SUM(DECODE(TO_CHAR(hire_date,'YYYY'),2005,1,0))"2005",
       SUM(DECODE(TO_CHAR(hire_date,'YYYY'),1996,1,0))"1996",
+
       SUM(DECODE(TO_CHAR(hire_date,'YYYY'),2006,1,0))"2006",
       SUM(DECODE(TO_CHAR(hire_date,'YYYY'),1997,1,0))"1997",
+
       SUM(DECODE(TO_CHAR(hire_date,'YYYY'),2007,1,0))"2007",
       SUM(DECODE(TO_CHAR(hire_date,'YYYY'),1998,1,0))"1998"
+
       SUM(DECODE(TO_CHAR(hire_date,'YYYY'),2008,1,0))"2008"
 
FROM employees;
 
FROM employees;
 
</pre>
 
</pre>
Línia 93: Línia 93:
 
<pre>
 
<pre>
 
SELECT job_id "Job",
 
SELECT job_id "Job",
       SUM(DECODE(department_id, 20, salary)) Dept 20",
+
       SUM(DECODE(department_id, 20, salary)) "Dept 20",
       SUM(DECODE(department_id, 50, salary)) Dept 50",
+
       SUM(DECODE(department_id, 50, salary)) "Dept 50",
       SUM(DECODE(department_id, 80, salary)) Dept 80",
+
       SUM(DECODE(department_id, 80, salary)) "Dept 80",
       SUM(DECODE(department_id, 90, salary)) Dept 90",
+
       SUM(DECODE(department_id, 90, salary)) "Dept 90",
 
       SUM(salary) "Total"
 
       SUM(salary) "Total"
 
FROM employees
 
FROM employees
 
GROUP BY job_id;
 
GROUP BY job_id;
 
</pre>
 
</pre>

Revisió de 20:12, 16 nov 2017

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


1) Las funciones de grupo funcionan en varias filas para producir un resultado por grupo.

Verdadero/Falso

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

Verdadero/Falso

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

Verdadero/Falso

El departamento de recursos humanos necesita los siguientes informes:

4) Encontrar el valor más alto, el valor más bajo, la suma y la media del salario de todos los empleados. Etiquete las columnas como Maximum, Minimum, Sum y Average, respectivamente. Redondee los resultados al número entero más cercano. Guarde la sentencia SQL como lab_05_04.sql. Ejecute la consulta.

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 del archivo lab_05_04.sql para mostrar el valor mínimo, el valor máximo, la suma y la media del salario de cada tipo de cargo. Vuelva a guardar lab_05_04.sql como lab_05_05.sql. Ejecute la sentencia en el archivo lab_05_05.sql.

SELECT job_id, ROUND(MAX(salary),0) "Maximum",
               ROUND(MIN(salary),0) "Minimum",
               ROUND(SUM(salary),0) "Sum",
               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 cargo.

SELECT job_id, COUNT(*)
FROM employees
GROUP BY job_id;

Generalice la consulta para preguntar al usuario del departamento de recursos humanos cuál es su puesto. Guarde el script en un archivo denominado lab_05_06.sql. Ejecute la consulta. Introduzca IT_PROG cuando se le solicite y haga clic en OK.

SELECT job_id, COUNT(*)
FROM employees
WHERE job_id = '&job_title'
GROUP BY job_id;

7) Determine el número de gestores sin enumerarlos en una lista. Etiquete la columna como Number of Managers.

Indicación: utilice la columna MANAGER_ID para determinar el número de gestores.

SELECT COUNT(DISTINCT manager_id) "Number of Managers"
FROM employees;

8) Busque la diferencia entre los salarios más altos y más bajos. Etiquete la columna como DIFFERENCE.

SELECT MAX(salary) - MIN(salary) DIFFERENCE
FROM employees;

Si tiene tiempo, realice los siguientes ejercicios:

9) Cree un informe para mostrar el número de gestor y el salario del empleado con menor sueldo de ese gestor. Excluya a cualquier trabajador del que desconozca su gestor. Excluya cualquier grupo en el que el salario mínimo sea 6.000 dólares o menos. Ordene la salida en orden descendente de salarios.

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;

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

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

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;

11) Cree una consulta de matriz para mostrar el cargo, el salario de ese cargo según el número de departamento y el salario total del cargo para los departamentos 20, 50, 80 y 90, proporcionando a cada columna una cabecera adecuada.

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;