Documentos de Académico
Documentos de Profesional
Documentos de Cultura
2.- Cree un usuario USER1 y un grupo llamado ADMIN, asígnele al usuario USER1 al rol ADMIN:
Empleado (cod_emp smallint, nombre char(32), cargo char(16), cod_jefe smallint, fecha_ing
smalldatetime, fecha_nac smalldatetime, salario smallmoney, n_dept tinyint, genero char(1))
Dept (n_dept, tinyint, nombre_dept char(16))
4.- Asigne permisos de INSERT,UPDATE y DELETE a las tablas anteriores para el rol
ADMINISTRADOR
5.- Inserte varios registros en cada una de las tablas utilizando el usuario USER1.
a. Listar el nombre, el cargo y el salario de aquellos empleados que no sean los empleados 74
o 76 y cuyo salario sea mayor que todos los promedios de salario de los departamentos que
no sean el departamento de sistemas.
Query:
SELECT nombre, cargo, salario
FROM empleado
where cod_emp not in (74,76) and
salario > all (SELECT avg(salario)
FROM empleado
WHERE n_dept <> 4
GROUP BY n_dept)
Query:
SELECT N_DEPT, CARGO, COUNT(COD_EMP), AVG(SALARIO)
FROM EMPLEADO
GROUP BY N_DEPT, CARGO
HAVING SUM(SALARIO)>356 AND COUNT(COD_EMP)< (SELECT AVG (SUB.N_EMP)
FROM (SELECT COUNT(COD_EMP) N_EMP
FROM EMPLEADO
GROUP BY N_DEPT) SUB)
ORDER BY 3 DESC;
c. Listar el nombre, el cargo y el salario de aquellos empleados cuya fecha de ingreso
(fecha_ing) sea mayor o igual que la del empleado (cod_emp) 70 y que su salario sea menor o
igual que cualquiera de los empleados 75, 76 y 78, ordene la lista por salario en forma
descendente y por nombre de empleado en forma ascendente.
Query:
SELECT nombre, cargo, salario
FROM empleado
WHERE fecha_ing >= (SELECT fecha_ing
FROM empleado
WHERE cod_emp = 70) AND
salario <= any (SELECT salario
FROM empleado
WHERE cod_emp
in (75,76,78))
ORDER BY 3 DESC,1;
Query:
SELECT a.cod_emp, a.nombre
FROM empleado b join empleado a
ON b.cod_jefe = a.cod_emp
WHERE a.GENERO = 'm'
GROUP BY a.cod_emp, a.nombre;
f. Listar el número de empleados y la suma de sus salarios por cada jefe (cod_emp y nombre
del jefe). Los empleados que no son jefes o que es lo mismo, no están en la columna cod_jefe
también deben aparecer en el listado
Query:
SELECT b.cod_emp, b.nombre, count(a.cod_emp)Num_empleados, sum(a.salario)salario
FROM empleado a RIGHT JOIN empleado b ON a.cod_jefe = b.cod_emp
GROUP BY b.cod_emp, b.nombre
h. Liste los subtotales de la suma de salarios por departamento (n_dept) y cargo, por
departamento, por cargo; y el total general de la suma de los salarios. (Sugerencia: Investigue
sentencia cube).
Query:
select n_dept ,cargo, sum (salario)
from empleado
group by n_dept,cargo
Query:
SELECT d.nombre_dept,
(SELECT e.nombre
FROM empleado e
WHERE e.n_dept = d.n_dept
AND e.fecha_nac = (SELECT max (e1.fecha_nac)
FROM empleado e1
WHERE e.n_dept = e1.n_dept))MAS_JOVEN,
(SELECT DATEDIFF ( yy , e.fecha_nac ,getdate() )
FROM empleado e
WHERE e.n_dept = d.n_dept
AND e.fecha_nac = (SELECT max (e1.fecha_nac)
FROM empleado e1
WHERE e.n_dept = e1.n_dept))EDAD_JOVEN,
(SELECT e.nombre
FROM empleado e
WHERE e.n_dept = d.n_dept
AND e.fecha_nac = (SELECT min (e1.fecha_nac)
FROM empleado e1
WHERE e.n_dept = e1.n_dept))MAS_VIEJO,
(SELECT DATEDIFF ( yy , e.fecha_nac ,getdate() )
FROM empleado e
WHERE e.n_dept = d.n_dept
AND e.fecha_nac = (SELECT min (e1.fecha_nac)
FROM empleado e1
WHERE e.n_dept = e1.n_dept)) EDAD_VIEJO
FROM dbo.DEPT d
GROUP BY d.n_dept,d.nombre_dept