Diferència entre revisions de la pàgina «M2 - Bases de dades / Exercicis UF2: Llenguatges SQL / Solucions T5-HR»
(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; | + | |
− | + | 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. | |
− | + | <pre> | |
− | + | 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 | |
− | |||
− | 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; | ||
− | + | </pre> | |
− | + | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
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. |
− | + | <pre> | |
− | |||
− | |||
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> |
− | + | 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 |
− | + | WHERE manager_id IS NOT NULL | |
− | + | GROUP BY manager_id | |
− | + | HAVING MIN(salary) > 6000 | |
− | + | ORDER BY MIN(salary) DESC; | |
− | + | </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: | ||
− | + | ||
− | + | 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. | |
− | + | <pre> | |
− | + | 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", | |
− | 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 | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | COUNT(*) total, | ||
− | SUM(DECODE(TO_CHAR(hire_date, | ||
− | 'YYYY'), | ||
− | SUM(DECODE(TO_CHAR(hire_date, | ||
− | 'YYYY'), | ||
− | SUM(DECODE(TO_CHAR(hire_date, | ||
− | 'YYYY'), | ||
− | SUM(DECODE(TO_CHAR(hire_date, 'YYYY'), | ||
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> | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |
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;