Diferència entre revisions de la pàgina «M2 - Bases de dades / Exercicis UF2: Llenguatges SQL / Solucions Repàs consultes HR»
Línia 135: | Línia 135: | ||
+-----------------------+------------------+ | +-----------------------+------------------+ | ||
− | SELECT | + | SELECT d.department_name "Nombre departamento", SUM((e.salary*12)+NVL(e.comm))"Coste año 2015" |
− | FROM employees e | + | FROM departments d, employees e |
− | GROUP BY | + | WHERE d.department_id=e.department_id |
+ | GROUP BY d.department_name; | ||
Línia 145: | Línia 146: | ||
| Nombre departamento | Sueldo medio | Salario maximo | | | Nombre departamento | Sueldo medio | Salario maximo | | ||
+------------------------+-----------------+-----------------+ | +------------------------+-----------------+-----------------+ | ||
+ | |||
+ | |||
+ | SELECT d.department_name "Nombre departamento", AVG(e.salary) "Suedo medio", MAX(e.salary) "Salario máximo" | ||
+ | FROM departments d, employees e | ||
+ | WHERE d.department_id=e.department_id | ||
+ | GROUP BY 1; |
Revisió del 17:46, 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 d.department_name "Nombre departamento", SUM((e.salary*12)+NVL(e.comm))"Coste año 2015" FROM departments d, employees e WHERE d.department_id=e.department_id GROUP BY d.department_name;
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 | +------------------------+-----------------+-----------------+
SELECT d.department_name "Nombre departamento", AVG(e.salary) "Suedo medio", MAX(e.salary) "Salario máximo" FROM departments d, employees e WHERE d.department_id=e.department_id GROUP BY 1;