4. Calcular la media de años que llevan los empleados en la empresa. Si la media supera los 15 años, subir el sueldo en 20000 pts a los empleados que esten en la primera decada desde la fundación de la empresa. Si no se supera esta media, se les subirá el sueldo a los empleados que no estén en la primera decada de la empresa. Mostrar los datos después de la actualización con formato de Fecha Completa: Martes 19 Octubre 1978.
DECLARE @MEDIA INT,@MINFECHA SMALLDATETIME,@DIF SMALLDATETIME SELECT @MINFECHA = MIN(FECHA_ALT) FROM EMP SELECT @MEDIA = AVG(DATEDIFF(YY,FECHA_ALT,GETDATE())) FROM EMP SELECT @DIF = DATEADD(YY,10,@MINFECHA) IF (@MEDIA > 15) BEGIN UPDATE EMP SET SALARIO = SALARIO + 20000 WHERE FECHA_ALT BETWEEN @MINFECHA AND @DIF SELECT DATENAME(WEEKDAY,FECHA_ALT) + ' ' + CAST(DATEPART(DAY,FECHA_ALT) AS CHAR(2)) + ' ' + DATENAME(MONTH,FECHA_ALT) + ' ' + DATENAME(YEAR,FECHA_ALT) AS [FECHA COMPLETA] ,APELLIDO ,SALARIO,'ACTUALIZACION COMPLETA' AS [ACTUALIZACION] FROM EMP WHERE FECHA_ALT BETWEEN @MINFECHA AND @DIF ORDER BY FECHA_ALT END ELSE BEGIN UPDATE EMP SET SALARIO = SALARIO + 10000 WHERE FECHA_ALT > @DIF SELECT DATENAME(WEEKDAY,FECHA_ALT) + ' ' + CAST(DATEPART(DAY,FECHA_ALT) AS CHAR(2)) + ' ' + DATENAME(MONTH,FECHA_ALT) + ' ' + DATENAME(YEAR,FECHA_ALT) AS [FECHA COMPLETA] ,APELLIDO ,SALARIO,'ACTUALIZACION COMPLETA' AS [ACTUALIZACION] FROM EMP WHERE FECHA_ALT > @DIF ORDER BY FECHA_ALT END
5. Mostrar los años de antigüedad de los empleados, la fecha de alta, y otro campo donde introduciremos los trienios que lleva en la empresa el trabajador hasta 7 como máximo y cuatro como mínimo. Si está fuera de este intervalo escribiremos 'No Bonificable'.
SELECT APELLIDO, FECHA_ALT ,'ANTIGÜEDAD' = CONVERT(NVARCHAR(50) ,DATEDIFF(YY,FECHA_ALT, GETDATE())) + ' AÑOS' ,'TRIENIOS' = CASE DATEDIFF(YY,FECHA_ALT, GETDATE()) / 3 WHEN '4' THEN 'CUATRO' WHEN '5' THEN 'CINCO' WHEN '6' THEN 'SEIS' WHEN '7' THEN 'SIETE' ELSE 'NO BONIFICABLE' END FROM EMP
6. Calculando la suma de salarios de los directores, subir el sueldo a los que cobren entre el minimo salario y 250000 pts.
Mantener el sueldo a los directores si la suma está entre 1200000 y 1300000.
Bajar el sueldo a los que se encuentren entre 250000 y el máximo salario.
Mostrar los datos actualizados antes y después de los empleados que se actualicen.
IF (SELECT SUM(SALARIO) FROM EMP WHERE OFICIO = 'DIRECTOR') < 1200001 BEGIN PRINT 'SUELDO SUBIDO A LOS DIRECTORES' DECLARE @MINSAL INT SELECT @MINSAL = MIN(SALARIO) FROM EMP WHERE OFICIO = 'DIRECTOR' PRINT 'ANTES DE LA ACTUALIZACIÓN' SELECT TOP 3 WITH TIES SALARIO,APELLIDO FROM EMP WHERE OFICIO = 'DIRECTOR' GROUP BY SALARIO,APELLIDO HAVING SALARIO BETWEEN @MINSAL AND 250000 ORDER BY SALARIO UPDATE EMP SET SALARIO = SALARIO * 1.1 WHERE OFICIO = 'DIRECTOR' AND SALARIO BETWEEN @MINSAL AND 250000 UPDATE EMP SET SALARIO = SALARIO * 1.1 WHERE OFICIO = 'DIRECTOR' PRINT 'DESPUÉS DE LA ACTUALIZACIÓN' SELECT TOP 3 WITH TIES SALARIO,APELLIDO FROM EMP WHERE OFICIO = 'DIRECTOR' GROUP BY SALARIO,APELLIDO HAVING SALARIO BETWEEN @MINSAL AND 250000 ORDER BY SALARIO END ELSE IF (SELECT SUM(SALARIO) FROM EMP WHERE OFICIO = 'DIRECTOR') BETWEEN 1200001 AND 1300000 BEGIN PRINT 'MISMO SUELDO A LOS DIRECTORES' SELECT SALARIO,APELLIDO FROM EMP WHERE OFICIO = 'DIRECTOR' ORDER BY SALARIO END ELSE IF (SELECT SUM(SALARIO) FROM EMP WHERE OFICIO = 'DIRECTOR') > 1300001 BEGIN PRINT 'SUELDO BAJADO A LOS DIRECTORES' DECLARE @MAXSAL INT SELECT @MAXSAL = MAX(SALARIO) FROM EMP WHERE OFICIO = 'DIRECTOR' PRINT 'ANTES DE LA ACTUALIZACIÓN' SELECT TOP 3 WITH TIES SALARIO,APELLIDO FROM EMP WHERE OFICIO = 'DIRECTOR' GROUP BY SALARIO,APELLIDO HAVING SALARIO BETWEEN 200000 AND @MAXSAL ORDER BY SALARIO DESC UPDATE EMP SET SALARIO = SALARIO / 1.1 WHERE OFICIO = 'DIRECTOR' AND SALARIO BETWEEN 200000 AND @MAXSAL PRINT 'DESPUÉS DE LA ACTUALIZACIÓN' SELECT TOP 3 WITH TIES SALARIO,APELLIDO FROM EMP WHERE OFICIO = 'DIRECTOR' GROUP BY SALARIO,APELLIDO HAVING SALARIO BETWEEN 200000 AND @MAXSAL ORDER BY SALARIO DESC END
Espero haber ayudado en algo. Hasta la próxima oportunidad!
Twittear
Muchas gracias!! me sirvió mucho!
ResponderEliminarHola JOSANT, muchas gracias por tu comentario. Nos agrada saber que la información te sirvió bastante.
EliminarSaludos!