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

De wikiserver
Dreceres ràpides: navegació, cerca
Línia 77: Línia 77:
 
   +-----------------+-------------+
 
   +-----------------+-------------+
  
   SELECT
+
   SELECT UPPER(e.first_name) "Nombre empleado", j.first_name "Nombre jefe"
   FROM  
+
   FROM employees e, employees j
   WHERE  
+
   WHERE e.manager_id=j.employee_id
 
+
 
 
 
 
 
  
 
7. Para cada jefe muestra cuantos empleados tiene a su cargo.
 
7. Para cada jefe muestra cuantos empleados tiene a su cargo.
Línia 89: Línia 87:
 
   | Nombre jefe    | Numero empleados |  
 
   | Nombre jefe    | Numero empleados |  
 
   +-----------------+------------------+
 
   +-----------------+------------------+
 +
 +
  SELECT e.first_name "Nombre jefe", COUNT(*)"Numero empleados"
 +
  FROM employees e 
 +
  GROUP BY (e.manager_id);
 +
 
  
 
8. Cantidad de empleados que han ingresado en la empresa en cada año.
 
8. Cantidad de empleados que han ingresado en la empresa en cada año.
Línia 95: Línia 98:
 
   |  Año  | Numero empleados |  
 
   |  Año  | Numero empleados |  
 
   +-------+------------------+
 
   +-------+------------------+
 +
 +
  SELECT TO_CHAR(e.hire_date,'YYYY') "Año", COUNT(*)
 +
  FROM employees e
 +
  GROUP BY TO_CHAR(e.hire_date,'YYYY');
 +
 
  
 
9. Para cada empleado y cada puesto ocupado los meses que ha trabajado en dicho puesto.
 
9. Para cada empleado y cada puesto ocupado los meses que ha trabajado en dicho puesto.
Línia 101: Línia 109:
 
   |  Nombre emp  |  Puesto | Meses trabajados |
 
   |  Nombre emp  |  Puesto | Meses trabajados |
 
   +--------------+---------+------------------+
 
   +--------------+---------+------------------+
 +
 +
  SELECT e.first_name "Nombre empleado",jh.job_id "puesto", ROUND(MONTHS_BETWEEN(jh.start-date,NVL(jh.end-date,SYSDATE))"Meses trabajados"
 +
  FROM employees e, jobs j, job_hystory jh
 +
  WHERE e.job_id=j.job_id
 +
  AND e.employee_id=jh.employee_id;
 +
 +
  
 
10. El nombre de los jefes de cada departamento y su telefono.
 
10. El nombre de los jefes de cada departamento y su telefono.
Línia 107: Línia 122:
 
   |  Nombre departamento  |  Nombre jefe    | Telefono jefe |
 
   |  Nombre departamento  |  Nombre jefe    | Telefono jefe |
 
   +------------------------+------------------+---------------+
 
   +------------------------+------------------+---------------+
 +
 +
  SELECT d.department_name "Nombre departamento", e.first_name "Nombre jefe", e.phone_number "telefono jefe"
 +
  FROM employees e, departments d
 +
  WHERE d.manager_id=e.employee_id;
 +
 +
  
 
11. El costo de cada departamento en el ultimo año (suma de salario *12 de todos los empleados mas comisiones)
 
11. El costo de cada departamento en el ultimo año (suma de salario *12 de todos los empleados mas comisiones)
  
 
   +------------------------+-----------------+
 
   +------------------------+-----------------+
   |  Nombre departamento  |  Coste año YYYY  |  |
+
   |  Nombre departamento  |  Coste año YYYY  |   
 
   +-----------------------+------------------+
 
   +-----------------------+------------------+
 +
 +
  SELECT TO_CHAR(e.hire_date,'YYYY') "Año", COUNT(*)
 +
  FROM employees e
 +
  GROUP BY TO_CHAR(e.hire_date,'YYYY');
  
  

Revisió del 17:41, 18 març 2015

Solucions Repàs Consultes BBDD HR

1. Muestra el nombre, apellido i salario mensual de los empleados que cobren mas que Jennifer ordenado por salario descendiente

 +--------------------+-------------------+
 | Nombre i apellido  | Salario Mensual   | 
 +--------------------+-------------------+


 SELECT e.first_name||' '||e.last_name "Nombre i apellido"s, e.salary"Salario Mensual"
 FROM employees e
 WHERE e.salary >ANY (SELECT e.salary
                    FROM employees e
                    WHERE UPPER(e.first_name)='JENNIFER');

2. Para cada departamento Muestra el nombre del empleado/s que cobran menos.

 +------------------------+-------------------+
 | Nombre departamentodo  | Nombre empleado   | 
 +------------------------+-------------------+


 SELECT e.department_id"Nombre departamento", e.first_name ||' '|| e.last_name "Nombre empleado"
 FROM e.employees e
 WHERE (e.department.id,e.salary) IN (SELECT e.department_id, min(e.sal)
                                    FROM employees e
                                    GROUP BY e.department);


3. Para cada región muestra cuantos países hay. Ordena por numero de países ascendentemente.

 +-----------------+-------------------+
 | Nombre Región   | Numero de paises  | 
 +-----------------+-------------------+


 SELECT r.region_name "Nombre Region", count(*)"Numero de paises"
 FROM regions r,countries c
 WHERE r.region_id=c.region_id
 GROUP BY r.region_name 
 ORDER BY 2 ASC;


4. Muestra el nombre de los departamentos i nombre de su jefe, que se encuentran fuera de EEUU.

 +--------------+-------+-----------------+
 | Nombre Dep   | Jefe  |  Sueldo Mensual | 
 +------------- +-------+-----------------+
 SELECT d.department_name "Nombre Dep", e.first_name "Jefe", e.salary "Sueldo Mensual"
 FROM countries c, locations l, departments d, employees e
 WHERE c.country_id=l.country_id
 AND l.location_id=d.location.id
 AND d.manager_id=e.employee_id
 AND c.country_name <> 'United States Of America'; 


5. Mostrar el nombre de los países que empiezan o termina en una “a" junto con el nombre de la region a la que pertencen.

 +-------------+--------+
 | Nombre pais | Region | 
 +-------------+--------+
 SELECT c.country_name "Nombre país", r.region_name "Region"
 FROM countries c, regions r
 WHERE c.region_id=r.region_id
 AND UPPER(c.country_name) LIKE 'A%'
 OR UPPER(c.country_name) LIKE '%A';

6. Muestra el nombre de cada empleado en mayúsculas junto con el de su respectivo jefe.

 +-----------------+-------------+
 | Nombre empleado | Nombre jefe | 
 +-----------------+-------------+
 SELECT UPPER(e.first_name) "Nombre empleado", j.first_name "Nombre jefe" 
 FROM employees e, employees j
 WHERE e.manager_id=j.employee_id
 

7. Para cada jefe muestra cuantos empleados tiene a su cargo.

 +-----------------+------------------+
 | Nombre jefe     | Numero empleados | 
 +-----------------+------------------+
 SELECT e.first_name "Nombre jefe", COUNT(*)"Numero empleados"
 FROM employees e  
 GROUP BY (e.manager_id);
 

8. Cantidad de empleados que han ingresado en la empresa en cada año.

 +-------+------------------+
 |  Año  | Numero empleados | 
 +-------+------------------+
 SELECT TO_CHAR(e.hire_date,'YYYY') "Año", COUNT(*)
 FROM employees e
 GROUP BY TO_CHAR(e.hire_date,'YYYY'); 
 

9. Para cada empleado y cada puesto ocupado los meses que ha trabajado en dicho puesto.

 +--------------+---------+------------------+
 |  Nombre emp  |  Puesto | Meses trabajados |
 +--------------+---------+------------------+
 SELECT e.first_name "Nombre empleado",jh.job_id "puesto", ROUND(MONTHS_BETWEEN(jh.start-date,NVL(jh.end-date,SYSDATE))"Meses trabajados"
 FROM employees e, jobs j, job_hystory jh 
 WHERE e.job_id=j.job_id
 AND e.employee_id=jh.employee_id;


10. El nombre de los jefes de cada departamento y su telefono.

 +------------------------+------------------+---------------+
 |  Nombre departamento   |  Nombre jefe     | Telefono jefe |
 +------------------------+------------------+---------------+
 SELECT d.department_name "Nombre departamento", e.first_name "Nombre jefe", e.phone_number "telefono jefe"
 FROM employees e, departments d
 WHERE d.manager_id=e.employee_id; 


11. El costo de cada departamento en el ultimo año (suma de salario *12 de todos los empleados mas comisiones)

 +------------------------+-----------------+
 |  Nombre departamento  |  Coste año YYYY  |   
 +-----------------------+------------------+
 SELECT TO_CHAR(e.hire_date,'YYYY') "Año", COUNT(*)
 FROM employees e
 GROUP BY TO_CHAR(e.hire_date,'YYYY'); 


12. Para cada departamento el promedio de sueldo, el salario maximo i el mínimo pero sólo mostrar los departamentos con promedio superior a la media de todos los departamentos.

 +------------------------+-----------------+-----------------+ 
 |  Nombre departamento   |  Sueldo medio   | Salario maximo  | 
 +------------------------+-----------------+-----------------+