Está en la página 1de 3

Resolución - Ejercicios N°2 – SQL Básico

Utilizando la base de datos RRHH:

1. Adicionar dos campos a la tabla Empleados, que corresponda a la EDAD del empleado en años,
y otro campo que corresponda al nombre completo de los empleados (llámela
NOMBRE_COMPLETO). Como no hay campo Fecha de nacimiento, utilice el campo
FECHA_INGRESO en su lugar.
ALTER TABLE CL_EMPLEADOS
ADD EDAD INT , NOMBRE_COMPLETO VARCHAR(50)
GO

UPDATE CL_EMPLEADOS
SET EDAD = DATEDIFF(YEAR,FECHA_INGRESO, GETDATE()),
NOMBRE_COMPLETO = CONCAT(NOMBRES, ' ',APELLIDOS)
GO

SELECT * FROM CL_EMPLEADOS

2. En base a la tabla de empleados, crear una tabla que contenga a los trabajadores que tengan
25 años o menos.
SELECT *
INTO MENORES_25
FROM CL_EMPLEADOS
WHERE EDAD <= 25

SELECT *
FROM MENORES_25
ORDER BY EDAD ASC

3. A esta última tabla (de la preg. 2), agregarle un campo de SUELDO_NETO, que consista en
sumar los campos sueldos y los porcentajes de comisiones, y quitarles el 20% (concepto de
AFP e impuestos). Convertir los campos para realizar los cálculos.
ALTER TABLE MENORES_25
ADD SUELDO_NETO NUMERIC(10,3)
GO
UPDATE MENORES_25
SET SUELDO_NETO = (SUELDO + PCT_COMISION * SUELDO)*0.8

4. Cambie el nombre de SUELDO_NETO por SUELDO_FINAL, y cambie el nombre a esta última


tabla (de la preg. 2).
SELECT*
INTO MENORES_25_COPIA
FROM MENORES_25
GO

EXEC SP_RENAME 'MENORES_25_COPIA.SUELDO_NETO', 'SUELDO_FINAL',


'COLUMN'
GO

SELECT*
FROM MENORES_25
ORDER BY EDAD ASC
EXEC SP_RENAME 'MENORES_25_COPIA', 'EMPLEADOS_25'
GO

SELECT*
FROM EMPLEADOS_25
ORDER BY EDAD ASC

5. Se va a hacer cambios en el campo EMAIL de la tabla empleados, ahora el correo va a ser las
primeras tres letras del nombre y las tres del apellido separados por un punto, y terminarlo en
@empresa.com.pe (por ejemplo: lui.gar@empresa.com.pe). Actualice el campo EMAIL con
esta nueva estructura en la tabla de la preg. 2.
UPDATE EMPLEADOS_25
SET EMAIL = LEFT(NOMBRES,3) + '.' + LEFT(APELLIDOS,3) +
'@EMPRESA.COM.PE'
GO

SELECT*
FROM EMPLEADOS_25

6. Actualice la estructura del campo TELEFONO en la tabla de la preg. 2. Si la longitud del campo
es menor o igual a 12 cambiar la estructura a (123)456-XXXX, caso contrario solamente cambie
los puntos por guiones (no use CASE WHEN sino IIF).
UPDATE MENORES_25
SET TELEFONO =
IIF(LEN (REPLACE(TELEFONO,'.',''))<=12, '(' +
REPLACE(LEFT(TELEFONO,4),'.','') + ')' +
REPLACE(SUBSTRING(TELEFONO,5,4),'.','') + '-' +
REPLACE(SUBSTRING(TELEFONO,9,LEN(TELEFONO)),'.',''),
REPLACE(TELEFONO,'.','-') )
GO
SELECT * FROM EMPLEADOS_25

7. Muestre la cantidad de empleados, el promedio de edad, la suma y el promedio del sueldo


final agrupado por letra inicial del apellido del trabajador. Ordene el resultado por orden de la
letra inicial en orden descendente.
SELECT
LEFT(APELLIDOS,1)AS INICIAL_APELL,
COUNT(1) AS CANT_EMPL,
AVG(EDAD) AS PROM_EDAD,
SUM(SUELDO_FINAL) AS SUM_SUELDO_FINAL,
AVG(SUELDO_FINAL)AS PROM_SUELDO_FINAL
FROM EMPLEADOS_25
GROUP BY LEFT(APELLIDOS,1)
ORDER BY INICIAL_APELL DESC

8. Para poder hacer las actividades de cumpleaños de la empresa, se solicita adicionar un campo
en la tabla de Empleados que sea la descripción del mes de Cumpleaños de los empleados.
ALTER TABLE CL_EMPLEADOS
ADD MES_CUMPLEAÑOS VARCHAR(20)
GO
UPDATE CL_EMPLEADOS
SET MES_CUMPLEAÑOS = DATENAME (mm, FECHA_INGRESO)
GO

SELECT * FROM CL_EMPLEADOS

9. Para definir la actividad a realizar por los cumpleaños, se decidió para este año realizar una
actividad nocturna si el cumpleañero es menor de 24 años, caso contrario se realizará un
almuerzo. Adicione el campo adicional a la tabla Empleados con la actividad a realizar y cuente
cuantos almuerzos y actividades nocturnas se realizarán por cada mes del año.
ALTER TABLE CL_EMPLEADOS
ADD ACTIV_POR_CUMPLEAÑOS VARCHAR(30)
GO

UPDATE CL_EMPLEADOS
SET ACTIV_POR_CUMPLEAÑOS = IIF (EDAD < 24, 'ACTIVIDAD NOCTURNA',
'ALMUERZO')
GO

SELECT MONTH(FECHA_INGRESO)AS ID_MES,MES_CUMPLEAÑOS,


SUM (CASE ACTIV_POR_CUMPLEAÑOS WHEN 'ACTIVIDAD NOCTURNA'THEN 1 ELSE
0 END) AS
CANT_ACTIV_NOCTURNA,
SUM (CASE ACTIV_POR_CUMPLEAÑOS WHEN 'ALMUERZO'THEN 1 ELSE 0 END) AS
CANT_ALMUERZO
FROM CL_EMPLEADOS
GROUP BY MONTH(FECHA_INGRESO),MES_CUMPLEAÑOS
ORDER BY MONTH(FECHA_INGRESO) ASC

También podría gustarte