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
(Es crea la pàgina amb «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 po...».)
 
 
(Hi ha 2 revisions intermèdies del mateix usuari que no es mostren)
Línia 1: Línia 1:
 
Determine la validez de las tres sentencias siguientes. Seleccione Verdadero o Falso.
 
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.
 
1) Las funciones de grupo funcionan en varias filas para producir un resultado por grupo.
Verdadero/Falso
+
 
 +
'''Verdadero'''/Falso
 +
 
 
2) Las funciones de grupo incluyen valores nulos en los cálculos.
 
2) Las funciones de grupo incluyen valores nulos en los cálculos.
Verdadero/Falso
+
 
 +
Verdadero/'''Falso'''
 +
 
 
3) La cláusula WHERE restringe las filas antes de incluirlas en un cálculo de grupo.
 
3) La cláusula WHERE restringe las filas antes de incluirlas en un cálculo de grupo.
Verdadero/Falso
+
 
 +
'''Verdadero'''/Falso
 +
 
 
El departamento de recursos humanos necesita los siguientes informes:
 
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,
+
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.
respectivamente. Redondee los resultados al número entero más cercano. Guarde la
+
<pre>
sentencia SQL como lab_05_04.sql. Ejecute la consulta.
+
SELECT ROUND(MAX(salary),0) "Maximum",
SELECT ROUND(MAX(salary),0)
+
      ROUND(MIN(salary),0) "Minimum",
ROUND(MIN(salary),0)
+
      ROUND(SUM(salary),0) "Sum",
ROUND(SUM(salary),0)
+
      ROUND(AVG(salary),0) "Average"
ROUND(AVG(salary),0)
+
FROM employees;
FROM
+
</pre>
employees;
+
 
"Maximum",
+
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
"Minimum",
+
guardar lab_05_04.sql como lab_05_05.sql. Ejecute la sentencia en el archivo lab_05_05.sql.
"Sum",
+
<pre>
"Average"
+
SELECT job_id, ROUND(MAX(salary),0) "Maximum",
y
+
              ROUND(MIN(salary),0) "Minimum",
m
+
              ROUND(SUM(salary),0) "Sum",
e
+
              ROUND(AVG(salary),0) "Average"
d
+
FROM employees
a
 
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)
 
ROUND(MIN(salary),0)
 
ROUND(SUM(salary),0)
 
ROUND(AVG(salary),0)
 
FROM
 
employees
 
 
GROUP BY job_id;
 
GROUP BY job_id;
"Maximum",
+
</pre>
"Minimum",
+
 
"Sum",
 
"Average"
 
e
 
l
 
c
 
a
 
r
 
O ly
 
& On
 
l
 
a e
 
n
 
r
 
s
 
e
 
t
 
U
 
n
 
I
 
c
 
A
 
 
6) Escriba una consulta para mostrar el número de personas con el mismo cargo.
 
6) Escriba una consulta para mostrar el número de personas con el mismo cargo.
 +
<pre>
 
SELECT job_id, COUNT(*)
 
SELECT job_id, COUNT(*)
FROM
+
FROM employees
employees
 
 
GROUP BY job_id;
 
GROUP BY job_id;
Generalice la consulta para preguntar al usuario del departamento de recursos
+
</pre>
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
+
Generalice la consulta para preguntar al usuario del departamento de recursos humanos cuál es su puesto. Guarde el script en un archivo denominado
haga clic en OK.
+
lab_05_06.sql. Ejecute la consulta. Introduzca IT_PROG cuando se le solicite y haga clic en OK.
e
+
<pre>
l
 
c
 
 
SELECT job_id, COUNT(*)
 
SELECT job_id, COUNT(*)
FROM
+
FROM employees
employees
 
 
WHERE job_id = '&job_title'
 
WHERE job_id = '&job_title'
 
GROUP BY job_id;
 
GROUP BY job_id;
 +
</pre>
  
7) Determine el número de gestores sin enumerarlos en una lista. Etiquete la columna
+
7) Determine el número de gestores sin enumerarlos en una lista. Etiquete la columna como Number of Managers.
como Number of Managers.
+
 
Indicación: utilice la columna MANAGER_ID para determinar el número de gestores.
+
'''Indicación:''' utilice la columna MANAGER_ID para determinar el número de gestores.
 +
<pre>
 
SELECT COUNT(DISTINCT manager_id) "Number of Managers"
 
SELECT COUNT(DISTINCT manager_id) "Number of Managers"
FROM
+
FROM employees;
employees;
+
</pre>
8) Busque la diferencia entre los salarios más altos y más bajos. Etiquete la columna
+
 
como DIFFERENCE.
+
8) Busque la diferencia entre los salarios más altos y más bajos. Etiquete la columna como DIFFERENCE.
SELECT
+
<pre>
FROM
+
SELECT MAX(salary) - MIN(salary) DIFFERENCE
MAX(salary) - MIN(salary) DIFFERENCE
+
FROM employees;
employees;
+
</pre>
 +
 
 
Si tiene tiempo, realice los siguientes ejercicios:
 
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
+
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.
gestor. Excluya cualquier grupo en el que el salario mínimo sea 6.000 dólares o
+
<pre>
menos. Ordene la salida en orden descendente de salarios.
+
SELECT manager_id, MIN(salary)
SELECT
+
FROM employees
FROM
+
WHERE manager_id IS NOT NULL
WHERE
+
GROUP BY manager_id
GROUP BY
+
HAVING MIN(salary) > 6000
HAVING
+
ORDER BY MIN(salary) DESC;
ORDER BY
+
</pre>
manager_id, MIN(salary)
+
 
employees
 
manager_id IS NOT NULL
 
manager_id
 
MIN(salary) > 6000
 
MIN(salary) DESC;
 
 
Si desea superarse a sí mismo, complete los siguientes ejercicios:
 
Si desea superarse a sí mismo, complete los siguientes ejercicios:
y
+
 
m
+
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.
e
+
<pre>
d
+
SELECT COUNT(*) total,
a
+
      SUM(DECODE(TO_CHAR(hire_date,'YYYY'),2005,1,0))"2005",
c
+
      SUM(DECODE(TO_CHAR(hire_date,'YYYY'),2006,1,0))"2006",
A
+
      SUM(DECODE(TO_CHAR(hire_date,'YYYY'),2007,1,0))"2007",
10) Cree una consulta que muestre el número total de empleados y, de ese total, el
+
      SUM(DECODE(TO_CHAR(hire_date,'YYYY'),2008,1,0))"2008"
número de empleados contratados en 1995, 1996, 1997 y 1998. Cree las cabeceras de
 
columna adecuadas.
 
SELECT
 
e
 
l
 
c
 
a
 
r
 
O ly
 
& On
 
l
 
a e
 
n
 
r
 
s
 
e
 
t
 
U
 
n
 
I
 
COUNT(*) total,
 
SUM(DECODE(TO_CHAR(hire_date,
 
'YYYY'),1995,1,0))"1995",
 
SUM(DECODE(TO_CHAR(hire_date,
 
'YYYY'),1996,1,0))"1996",
 
SUM(DECODE(TO_CHAR(hire_date,
 
'YYYY'),1997,1,0))"1997",
 
SUM(DECODE(TO_CHAR(hire_date, 'YYYY'),1998,1,0))"1998"
 
 
FROM employees;
 
FROM employees;
 +
</pre>
  
11) Cree una consulta de matriz para mostrar el cargo, el salario de ese cargo según el
+
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.
número de departamento y el salario total del cargo para los departamentos 20, 50, 80
+
<pre>
y 90, proporcionando a cada columna una cabecera adecuada.
+
SELECT job_id "Job",
SELECT
+
      SUM(DECODE(department_id, 20, salary)) "Dept 20",
job_id "Job",
+
      SUM(DECODE(department_id, 50, salary)) "Dept 50",
SUM(DECODE(department_id
+
      SUM(DECODE(department_id, 80, salary)) "Dept 80",
SUM(DECODE(department_id
+
      SUM(DECODE(department_id, 90, salary)) "Dept 90",
SUM(DECODE(department_id
+
      SUM(salary) "Total"
SUM(DECODE(department_id
+
FROM employees
SUM(salary) "Total"
 
FROM
 
employees
 
 
GROUP BY job_id;
 
GROUP BY job_id;
,
+
</pre>
,
 
,
 
,
 
20,
 
50,
 
80,
 
90,
 
salary))
 
salary))
 
salary))
 
salary))
 
"Dept
 
"Dept
 
"Dept
 
"Dept
 
20",
 
50",
 
80",
 
90",
 

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;