Cristhian Sebastian Sosa

Linkedin

USE CoderHouse;
--1
/*
Indicar cuantos cursos y carreras  tiene el área de Data.
Renombrar la nueva columna como cant_asignaturas. Keywords:
Tipo, Área, Asignaturas.
*/

SELECT * FROM Asignaturas;
SELECT * FROM Area;

SELECT
	Tipo,
	COUNT(Tipo) as Cant_Tipo
FROM Asignaturas
WHERE Area = 5
GROUP BY Tipo;

--2
/*
Se requiere saber cual es el nombre, el documento y el teléfono de los estudiantes que son
profesionales en agronomía y que nacieron entre el año 1970 y el año 2000. Keywords:
Estudiantes, Profesión, fecha de Nacimiento.
*/
SELECT * FROM Estudiantes;

--Extraigo el ID de la profesion agronomia
SELECT
	ProfesionesID,
	Profesiones
FROM Profesiones
WHERE Profesiones LIKE 'Agro%';

--Extraigo todas las fechas comprendidas entre 1970 y 2000
SELECT
	[Fecha de Nacimiento]
FROM Estudiantes
WHERE Fecha de Nacimiento BETWEEN 19700101 AND 20000101
ORDER BY [Fecha de Nacimiento] ASC;

--Resolución del inciso 2 de forma simple
SELECT
	Nombre,
	Documento,
	Telefono
FROM Estudiantes
WHERE
	(YEAR([Fecha de Nacimiento]) BETWEEN 1970 AND 2000)
	AND
	(Profesion = 6)
ORDER BY [Fecha de Nacimiento] ASC;

--Resolución del inciso 2, haciendo una subconsulta
SELECT
	Nombre,
	Documento,
	Telefono
FROM Estudiantes
WHERE
	(YEAR([Fecha de Nacimiento]) BETWEEN 1970 AND 2000)
	AND
	(Profesion = (	SELECT
						ProfesionesID
					FROM Profesiones
					WHERE Profesiones LIKE 'Agro%'))
ORDER BY [Fecha de Nacimiento] ASC;

--3
/*
Se requiere un listado de los docentes que ingresaron en el año 2021 y concatenar los campos nombre y apellido.
El resultado debe utilizar un separador: guión (-).
Ejemplo: Elba-Jimenez. Renombrar la nueva columna como Nombres_Apellidos.
Los resultados de la nueva columna deben estar en mayúsculas.
Keywords: Staff, Fecha Ingreso, Nombre, Apellido.
*/
SELECT
--TIP: puede usarse la funcion CONCAT() para concatenar campos
--TIP: puede usarse la funcion UPPER() para pasar letras a mayusculas
	UPPER(CONCAT(Nombre,'-',Apellido)) AS Nombres_Apellidos
FROM staff
WHERE YEAR([Fecha Ingreso]) =2021;

--4
/*
Indicar la cantidad de encargados de docentes y de tutores. Renombrar la columna como CantEncargados.
Quitar la palabra ”Encargado ”en cada uno de los registros.
Renombrar la columna como NuevoTipo.
Keywords: Encargado, tipo, Encargado_ID.
*/
SELECT
	REPLACE (Tipo,'Encargado','') AS NuevoTipo,
	COUNT(Encargado_ID) AS CantEncargados
FROM
	Encargado
GROUP BY Tipo;

--5
/*
Indicar cual es el precio promedio de las carreras y los cursos por jornada.
Renombrar la nueva columna como Promedio.
Ordenar los promedios de Mayor a menor Keywords: Tipo, Jornada, Asignaturas.
*/
SELECT
	Jornada,
	Tipo,
	AVG(Costo) AS Promedio
FROM
	Asignaturas
GROUP BY Jornada, Tipo
	--TIP: Puedo usar 'Promedio' o AVG(Costo) para hacer el order by
ORDER BY Promedio DESC;

--6
/*
Se requiere calcular la edad de los estudiantes en una nueva columna.
Renombrar a la nueva columna Edad. Filtrar solo los que son mayores de 18 años.
Ordenar de Menor a Mayor Keywords: Fecha de Nacimiento, Estudiantes.
*/
SELECT
	nombre,
	apellido,
	/*TIP: para calcular la edad de los estudiantes puede usarse
	la funcion DATEIFF, que permite calcular
	la diferencia entre una fecha y otra.*/
	/*TIP:En SQL Server puede usarse GETDATE() para obtener la fecha actual*/
	DATEDIFF (YEAR,[Fecha de Nacimiento],GETDATE()) AS Edad
FROM Estudiantes
WHERE DATEDIFF(YEAR,[Fecha de Nacimiento], GETDATE())>=18
ORDER BY Edad ASC;

--7
/*
Se requiere saber el Nombre,el correo, la camada y la fecha de ingreso de personas
del staff que contienen correo .edu y su DocenteID se mayor o igual que 100
Keywords: Staff, correo, DocentesID
*/

SELECT
	Nombre,
	Correo,
	Camada,
	[Fecha Ingreso]
FROM Staff
WHERE Correo LIKE '%.edu%';

--8
/*
Se requiere conocer el documento, el domicilio el código postal y el nombre de los primeros estudiantes
que se registraron en la plataforma.
Keywords: Documento, Estudiantes, Fecha Ingreso.
*/
SELECT TOP 10 * FROM Estudiantes;
SELECT TOP 10
	Documento,
	Nombre,
	Domicilio,
	[Codigo Postal],
	[Fecha Ingreso]
	FROM Estudiantes
ORDER BY [Fecha Ingreso] ASC;

--9
/*
Indicar el nombre apellido y documento de los docentes y tutores que tienen asignaturas “UX”.
Keywords: Staff, Asignaturas, Nombre, Apellido.
*/
SELECT TOP 2 * FROM Staff;
SELECT TOP 2 * FROM Asignaturas;
SELECT TOP 2 * FROM Encargado;

--Consulta para buscar todas las asignaturas que contengan UX
SELECT AsignaturasID, Nombre
FROM Asignaturas
WHERE Nombre LIKE '%UX%';

--Consulta de resolución del ejercicio
SELECT
	Nombre,
	Apellido,
	Documento
FROM Staff
/*Como en la subConsulta tenemos mas de un valor usamos ANY para decirle que busque todos
los que concuerden con el AsignaturasID*/
WHERE Asignatura =ANY(	SELECT AsignaturasID
						FROM Asignaturas
						WHERE Nombre LIKE '%UX%')
;

--Consulta con columna de asignaturas
SELECT
	Staff.Nombre,
	Apellido,
	Documento,
	Asignaturas.Nombre AS 'Asignatura'
FROM
	Staff,
	Asignaturas
WHERE Asignaturas.Nombre LIKE '%UX%';

--10
/*
Se desea calcular el 25% de aumento para las asignaturas del área de marketing de la
jornada mañana se deben traer todos los campos, mas el de los cálculos correspondientes
el porcentaje y el Nuevo costo debe estar en decimal con 3 digitos.
Renombrar el calculo del porcentaje con el nombre porcentaje y
la suma del costo mas el porcentaje por NuevoCosto.

Keywords: Asignaturas, Costo, Área, Jornada, Nombre
*/

SELECT * FROM Asignaturas;

--Buscame todas las asignaturas de marketing que sean con jornada de la mañana
SELECT
	Nombre,
	Jornada,
	Costo
FROM Asignaturas
WHERE Nombre LIKE '%Mark%' AND Jornada = 'Manana';

--Resoucion
SELECT
	Nombre,
	Jornada,
	Costo,
	CONCAT(25,'%') AS 'Porcentaje',
	Costo*1.25 AS 'NuevoCosto'
FROM Asignaturas
WHERE Nombre LIKE '%Mark%' AND Jornada = 'Manana';

USE CoderHouse;

--1
/*
Indicar por jornada la cantidad de docentes que dictan y sumar los costos.
Esta información sólo se desea visualizar para las asignaturas de desarrollo web.
El resultado debe contener todos los valores registrados en la primera tabla,
Renombrar la columna del cálculo de la cantidad de docentes como cant_docentes y
la columna de la suma de los costos como suma_total.

Keywords: Asignaturas,Staff, DocentesID, Jornada, Nombre, costo.
*/
--Tablas a utilizar
SELECT * FROM Asignaturas;
SELECT * FROM Staff;

--Extraigo asignaturas con desarrollo web
SELECT
	AsignaturasID,
	Nombre
FROM Asignaturas
WHERE Nombre LIKE '%desarrollo web%';

--Cuento cantidad de jornadas
SELECT
	Jornada,
	COUNT(Tipo)
FROM Asignaturas
GROUP BY Jornada;

--Resolución del ejercicio 1
SELECT
	COUNT(DocentesID) AS Cant_Docente,
	Jornada,
	SUM(Costo) AS Suma_Total
FROM
	Staff AS st
	INNER JOIN
	Asignaturas AS Asig
	ON Asig.AsignaturasID = st.Asignatura
WHERE Asig.Nombre LIKE '%desarrollo web%'
GROUP BY Jornada
;

--2
/*
Se requiere saber el id del encargado, el nombre, el apellido y cuantos son los docentes que tiene asignados cada encargado.
Luego filtrar los encargados que tienen como resultado 0 ya que son los encargados que NO tienen asignado un docente.
Renombrar el campo de la operación como Cant_Docentes.
Keywords: Docentes_id, Encargado, Staff, Nombre, Apellido,Encargado_ID.
*/
SELECT * FROM Encargado;
SELECT * FROM Asignaturas;
SELECT * FROM Staff;
SELECT * FROM Area;
--Resolución

--Contidad de doscentes por encargado
SELECT
	enc.Encargado_ID,
	enc.Nombre,
	enc.Apellido,
	COUNT(st.DocentesID) AS Cant_Docentes
FROM
	Encargado AS enc
	LEFT JOIN Staff AS st
	ON enc.Encargado_ID = st.Encargado
GROUP BY enc.Encargado_ID, enc.Nombre,enc.Apellido
;

--Si el encargado NO tiene doscente asignado
SELECT
	enc.Encargado_ID,
	enc.Nombre,
	enc.Apellido,
	COUNT(st.DocentesID) AS Cant_Docentes
FROM
	Encargado AS enc
	LEFT JOIN Staff AS st
	ON enc.Encargado_ID = st.Encargado
GROUP BY enc.Encargado_ID, enc.Nombre,enc.Apellido
HAVING COUNT(st.DocentesID)=0
;

--3
/*
Se requiere saber todos los datos de asignaturas que no tienen un docente asignado.
El modelo de la consulta debe partir desde la tabla docentes.
Keywords: Staff, Encargado, Asignaturas, costo, Area.
*/
--Tablas a consultar
SELECT TOP 2 * FROM Asignaturas;
SELECT TOP 2 * FROM Staff;

--Resolucion ejercicio 3
SELECT
	Asig.*
FROM
	Staff AS st
	RIGHT JOIN Asignaturas AS Asig
	ON st.Asignatura=Asig.AsignaturasID
WHERE st.Encargado is null
GROUP BY
	st.Encargado,
	Asig.AsignaturasID,
	Asig.Area,
	Asig.Costo,
	Asig.Jornada,
	Asig.Jornada,
	Asig.Nombre,Asig.Tipo
;

--4
/*
Se quiere conocer la siguiente información de los docentes.
El nombre completo concatenar el nombre y el apellido. Renombrar NombresCompletos,
el documento, hacer un cálculo para conocer los meses de ingreso.
Renombrar meses_ingreso, el nombre del encargado.
Renombrar NombreEncargado, el teléfono del encargado.
Renombrar TelefonoEncargado, el nombre del curso o carrera, la jornada y el nombre del área.
Solo se desean visualizar solo los que llevan más de 3 meses.
Ordenar los meses de ingreso de mayor a menor.

Keywords: Encargo,Area,Staff,jornada, fecha ingreso.

*/
SELECT
	CONCAT(st.Nombre,' ',st.Apellido) AS NombresCompletos, --Usamos AS para recirle que este campo se llama NombresCompletos
	st.Documento,
	DATEDIFF(MONTH,st.[Fecha Ingreso],GETDATE()) AS meses_ingreso, --DateDiff(Month es el periodo de calculo, Fecha ingreso es la fecha de inicio, GetDate()trael la fecha de HOY)
	enc.Nombre AS NombreEncargado,
	enc.Telefono AS TelefonoEncargado,
	Asig.Nombre,
	Asig.Jornada,
	a.Nombre
FROM
	Staff AS st
	--usaremos Inner Join para decirle que traiga todos los datos en comun que tienen ambas tablas
	INNER JOIN Encargado AS enc ON st.Encargado = enc.Encargado_ID --especificamos mediante que campo se relacionana
	INNER JOIN Asignaturas AS Asig ON st.Asignatura = Asig.AsignaturasID
	INNER JOIN Area AS a ON Asig.Area = a.AreaID
GROUP by
	st.Documento,
	st.Nombre,
	st.Apellido,
	st.[Fecha Ingreso],
	enc.Nombre,
	enc.Telefono,
	Asig.Nombre,
	Asig.Jornada,
	a.Nombre
HAVING DATEDIFF(MONTH,st.[Fecha Ingreso],GETDATE()) >= 3 --Usamos having porque se filtra sobre una funcion de calculo
ORDER BY meses_ingreso DESC
;

--5
/*
Se requiere una listado unificado con nombre, apellido, documento y una marca indicando a que base corresponde.
Renombrar como Marca
Keywords: Encargo,Staff,Estudiantes
*/
SELECT
	Nombre,
	Apellido,
	Documento,
	'Encargado' AS Marca --Etiqueta
FROM Encargado

UNION

SELECT
	Nombre,
	Apellido,
	Documento,
	'Estudiantes' AS Marca --Etiqueta
FROM Estudiantes

UNION

SELECT
	Nombre,
	Apellido,
	Documento,
	'Staff' AS Marca --Etiqueta
FROM Staff
;
USE CoderHouse;

--1
/*
Con base en el diagrama de entidad relación presentado (siguiente slide),
identificar las relaciones de las tablas para hacer un relevamiento del modelo de negocios.

--2
Desarrollar la consulta SQL por cada análisis de negocio presentado (siguientes slides),
renombrando todos los campos que se utilicen en el select.
Implementar las sentencias que sean necesarias en cada caso: where, group by, having, join, union, etc.
Documentar con comentarios cada consulta indicando el proceso implementado,
ejemplo: “esta subconsulta brinda el id de cliente que más compras realizó”.
*/

-------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------
--NIVEL OPERATIVO

--1
/*
Análisis de docentes por camada:
Número de documento, nombre de docente y camada para identificar la camada mayor y la menor según el numero de la  camada.
Número de documento, nombre de docente y camada para identificar la camada con fecha de ingreso Mayo 2021.
Agregar un campo indicador que informe cuales son los registros ”mayor o menor” y los que son “Mayo 2021”
y ordenar el listado de menor a mayor por camada.
*/

SELECT
	t1.Documento,
	CONCAT(t1.Apellido,' ',t1.Nombre),
	t1.Camada,
	'Mayor' AS marca
FROM staff t1
WHERE t1.Camada = (SELECT MAX(Camada) FROM staff)
UNION
SELECT
	t1.Documento,
	CONCAT(t1.Apellido,' ',t1.Nombre),
	t1.Camada,
	'Menor' AS marca
FROM staff t1
WHERE t1.Camada = (SELECT MIN(Camada) FROM staff)
UNION
SELECT
	t1.Documento,
	CONCAT(t1.Apellido,' ',t1.Nombre),
	t1.Camada,
	'Mayo' AS marca
FROM staff t1
WHERE YEAR([Fecha Ingreso])=2021 and MONTH([Fecha Ingreso])=05
ORDER BY Camada;

-- SOLUCION
SELECT
	t1.Documento,
	CONCAT(t1.Apellido,' ',t1.Nombre),
	t1.Camada,
	'Mayor' AS marca
FROM staff t1
WHERE t1.Camada = (SELECT MAX(Camada) FROM staff WHERE YEAR([Fecha Ingreso]) = 2021 AND MONTH([Fecha Ingreso]) = 5)
UNION
SELECT
	t1.Documento,
	CONCAT(t1.Apellido,' ',t1.Nombre),
	t1.Camada,
	'Menor' AS marca
FROM staff t1
WHERE t1.Camada = (SELECT MIN(Camada) FROM staff WHERE YEAR([Fecha Ingreso]) = 2021 AND MONTH([Fecha Ingreso]) = 5)

--2
/*
Análisis diario de estudiantes:
Por medio de la fecha de ingreso de los estudiantes identificar: cantidad total de estudiantes.
Mostrar los periodos de tiempo separados por año, mes y día, y presentar la información ordenada
por la fecha que mas ingresaron estudiantes.
*/

SELECT
	YEAR([Fecha Ingreso]) AS Año,
	Month([Fecha Ingreso]) AS Mes,
	Day([Fecha Ingreso]) AS Día,
	COUNT(EstudiantesID) AS cantidad_estudiantes
FROM Estudiantes
GROUP BY [Fecha Ingreso]
ORDER BY [cantidad_estudiantes] DESC;

--3
/*
Análisis de encargados con mas docentes a cargo:
- Identificar el top 10 de los encargados que tiene más docentes a cargo,filtrar
solo los que tienen a cargo docentes.
- Ordenar de mayor a menor para podertener el listado correctamente.

TIPS
	Hay más de una tabla que consultar (Staff y Encargado) y hay un JOIN por realizar
*/

SELECT TOP 10
	t1.Encargado_ID,
	t1.Nombre,
	t1.Documento,
	COUNT(t2.DocentesID) AS cant
FROM Encargado t1
	LEFT JOIN Staff t2 ON t2.Encargado=t1.Encargado_ID
WHERE t1.Tipo LIKE '%Docente%'
GROUP BY t1.Encargado_ID,t1.Nombre,t1.Documento
ORDER BY cant DESC;

--4
/*
Análisis de profesiones con mas estudiantes:
Identificar la profesión y la cantidad de estudiantes que ejercen,
mostrar el listado solo de las profesiones que tienen mas de 5 estudiantes.
Ordenar de mayor a menor por la profesión que tenga mas estudiantes.
*/

SELECT t1.Profesiones,
	COUNT(t2.EstudiantesID) AS cant_estudiantes
FROM Profesiones t1
	LEFT JOIN Estudiantes t2 ON t1.ProfesionesID=t2.Profesion
GROUP BY t1.Profesiones
HAVING COUNT(t2.EstudiantesID) > 5
ORDER BY cant_estudiantes DESC

--5
/*
Análisis de estudiantes por área de educación:
Identificar: nombre del área, si la asignatura es carrera o curso , a qué jornada pertenece,
cantidad de estudiantes y monto total del costo de la asignatura.
Ordenar el informe de mayor a menor por monto de costos total tener en cuenta los docentes
que no tienen asignaturas ni estudiantes asignados, también sumarlos.
*/

SELECT
	t2.Nombre,
	t1.Tipo,
	t1.Jornada,
	COUNT(t4.EstudiantesID) AS Cantidad_Estudiantes,
	SUM(t1.Costo) AS costo_Total
FROM Asignaturas t1
	INNER JOIN Area t2 ON t1.Area=t2.AreaID
	LEFT JOIN Staff t3 ON t3.Asignatura=t1.AsignaturasID
	LEFT JOIN Estudiantes t4 ON t3.DocentesID=t4.Docente
GROUP BY t2.Nombre,t1.Tipo,t1.Jornada
ORDER BY costo_Total DESC;

-------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------
--NIVEL TACTICO

--1
/*
Análisis mensual de estudiantes por área:
Identificar para cada área: el año y el mes (concatenados en formato YYYYMM),
cantidad de estudiantes y monto total de las asignaturas.
Ordenar por mes del más actual al más antiguo y por cantidad de clientes de mayor a menor.
*/

SELECT
	t4.Nombre,
	CONVERT(nvarchar(6),T1.[Fecha Ingreso],112) AS YYYYMM,--CONVERT(DataType(long),campo fecha,style 112 YYYYMMDD)
	COUNT(t1.EstudiantesID) AS cantidad,
	SUM(t3.Costo) AS Total
FROM Estudiantes t1
	inner join Staff t2 ON t1.Docente=t2.DocentesID
	inner join Asignaturas t3 ON t2.Asignatura=t3.AsignaturasID
	inner join Area t4 ON t3.Area=t4.AreaID
GROUP BY T4.Nombre,CONVERT(nvarchar(6),T1.[Fecha Ingreso],112)
ORDER BY YYYYMM DESC, cantidad DESC;

--2
/*
Análisis encargado tutores jornada noche:
Identificar el nombre del encargado, el documento, el numero de la camada(solo el numero) y
la fecha de ingreso del tutor. Ordenar por camada de forma mayor a menor.
*/

SELECT
	t1.nombre,
	t1.Documento,
	right(t2.Camada,5) AS camada,
	t2.[Fecha Ingreso] AS FechaIngresoTutor
FROM Encargado AS t1
	INNER JOIN Staff AS t2 ON t1.Encargado_ID=t2.Encargado
	INNER join Asignaturas AS t3 ON t3.AsignaturasID=t2.Asignatura
WHERE
	t3.Jornada='Noche'
	and t1.Tipo like '%Tutores%';

--3
/*
Análisis asignaturas sin docentes o tutores:
Identificar el tipo de asignatura, la jornada, la cantidad de áreas únicas y
la cantidad total de asignaturas que no tienen asignadas docentes o tutores.
Ordenar por tipo de forma descendente.
*/

SELECT
	t1.Tipo,
	t1.jornada,
	COUNT(distinct t1.area) AS cant_areas,
	COUNT(t1.nombre) AS cant_asignaturas
FROM Asignaturas AS t1
	left join staff AS t2 ON t1.AsignaturasID=t2.Asignatura
WHERE DocentesID IS NULL
GROUP BY t1.Tipo, t1.Jornada
ORDER BY t1.tipo DESC;

--4
/*
Análisis asignaturas mayor al promedio:
Identificar el nombre de la asignatura, el costo de la asignatura y el promedio del costo de las asignaturas por área.
Una vez obtenido el dato, del promedio se debe visualizar solo las carreras que se encuentran por encima del promedio.
*/

select
	t1.Nombre,
	t1.Costo,
	t2.avgcosto
FROM Asignaturas AS t1,
    (SELECT Nombre,AVG(Costo) avgcosto
     FROM  Asignaturas
     GROUP BY Nombre) AS t2
WHERE
	t1.Nombre = t2.Nombre
	AND t1.Costo > t2.avgcosto;

--5
/*
Análisis aumento de salario docentes:
Identificar el nombre, documento, el área, la asignatura y el aumento del salario del docente,
este ultimo calcularlo sacándole un porcentaje al costo de la asignatura, todos las áreas tienen
un porcentaje distinto, Marketing-17%, Diseño-20%, Programacion-23%, Producto-13%, Data-15%, Herramientas 8%
Nota: para el ejercicio 5, los dos indicadores deben encontrarse en el mismo reporte,
identificar si es necesario unificar o reunir la consulta SQL.
*/

SELECT
	t1.Nombre,
	t1.Documento,
	t3.Nombre AS area,
	t2.Nombre AS asignaturas,
	CAST((costo * 0.17) AS decimal(7,3)) AS Salario
from Staff t1
	LEFT JOIN Asignaturas t2 ON t1.Asignatura=t2.AsignaturasID
	INNER JOIN area t3 ON t2.Area=t3.AreaID
WHERE t3.Nombre like ('%Marketing%')
UNION
SELECT
	t1.Nombre,
	t1.Documento,
	t3.Nombre AS area,
	t2.Nombre AS asignaturas,
	CAST((costo * 0.20) AS decimal(7,3)) AS Salario
FROM Staff t1
	LEFT JOIN Asignaturas t2 on t1.Asignatura=t2.AsignaturasID
	INNER JOIN area t3 on t2.Area=t3.AreaID
WHERE t3.Nombre LIKE ('%Dise%')
UNION
SELECT
	t1.Nombre,
	t1.Documento,
	t3.Nombre AS area,
	t2.Nombre AS asignaturas,
CAST((costo * 0.23) AS decimal(7,3)) AS Salario
FROM Staff t1
	LEFT JOIN Asignaturas t2 ON t1.Asignatura=t2.AsignaturasID
	INNER JOIN area t3 ON t2.Area=t3.AreaID
WHERE t3.Nombre LIKE ('%Programac%')
UNION
SELECT
	t1.Nombre,
	t1.Documento,
	t3.Nombre AS area,
	t2.Nombre AS asignaturas,
	CAST((costo * 0.13) AS decimal(7,3)) AS Salario
FROM Staff t1
	LEFT JOIN Asignaturas t2 ON t1.Asignatura=t2.AsignaturasID
	INNER JOIN area t3 ON t2.Area=t3.AreaID
WHERE t3.Nombre LIKE ('%Producto%')
UNION
SELECT
	t1.Nombre,
	t1.Documento,
	t3.Nombre AS area,
	t2.Nombre AS asignaturas,
	CAST((costo * 0.15) AS decimal(7,3)) AS Salario
FROM Staff t1
	LEFT JOIN Asignaturas t2 ON t1.Asignatura=t2.AsignaturasID
	INNER JOIN area t3 ON t2.Area=t3.AreaID
WHERE t3.Nombre LIKE ('%Data%')
UNION
SELECT
	t1.Nombre,
	t1.Documento,
	t3.Nombre AS area,
	t2.Nombre AS asignaturas,
CAST((costo * 0.8)AS decimal(7,3)) AS Salario
FROM Staff t1
	LEFT JOIN Asignaturas t2 ON t1.Asignatura=t2.AsignaturasID
	INNER JOIN area t3 ON t2.Area=t3.AreaID
WHERE t3.Nombre LIKE ('%Herramientas%');