TAREA2

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 8

CONSTRUCTORA DE HOTELES

La empresa constructora “MARK CORPORATION S.A.C.”, ejecuta un proyecto de


construcción de un consorcio de hoteles para lo cual cuenta con varios trabajadores, y para
el control del personal y la labor que realizan se tiene el siguiente modelo entidad relación:

Dónde: la tabla “asignación” guarda una fila por cada vez que un empleado es asignado a
laborar en un hotel a construir y en la tabla “empleado” cada empleado tiene un empleado
que es su supervisor.

Creamos el modelo de la base de datos en una base de datos en blanco de preferencia:

CREATE TABLE Empleado(


CodEmpleado Int NOT NULL,
Nombre Varchar(60),
PagoXHora Numeric(18,2),
Profesion Varchar(60),
CodEmpleadoSupervisor Int,
CONSTRAINT PK_Empleado PRIMARY KEY (CodEmpleado)
);

ALTER TABLE Empleado ADD


CONSTRAINT FK_Empleado_EmpleadoSup FOREIGN KEY (CodEmpleadoSupervisor)
REFERENCES Empleado(CodEmpleado)
;

CREATE TABLE Hotel(


CodHotel Int NOT NULL,
Direccion Varchar(60),
Tipo Varchar(60),
NivelCalidad Int,
Categoria Int,
CONSTRAINT PK_Hotel PRIMARY KEY (CodHotel)
);

CREATE TABLE Asignacion(


CodEmpleado Int NOT NULL,
CodHotel Int NOT NULL,
FechaInicio DateTime NOT NULL,
NumDias Int,
CONSTRAINT PK_Asignacion PRIMARY KEY (CodEmpleado,CodHotel,FechaInicio),
CONSTRAINT FK_Empleado_Asignacion FOREIGN KEY (CodEmpleado)
REFERENCES Empleado(CodEmpleado),
CONSTRAINT FK_Hotel_Asignacion FOREIGN KEY (CodHotel)
REFERENCES Hotel(CodHotel)
);

Ahora insertamos los datos con los que vamos a trabajar

INSERT INTO Hotel(CodHotel, Direccion, Tipo, NivelCalidad, Categoria)


VALUES (111, 'JR. LIMA # 120', 'TURISTAS', 4, 1);
INSERT INTO Hotel(CodHotel, Direccion, Tipo, NivelCalidad, Categoria)
VALUES (210, 'JR. JIMENEZ PIMENTEL # 340', 'TURISTAS', 3, 1);
INSERT INTO Hotel(CodHotel, Direccion, Tipo, NivelCalidad, Categoria)
VALUES (312, 'JR. AUGUSTO B. LEGUIA # 780', 'TURISTAS', 2, 2);
INSERT INTO Hotel(CodHotel, Direccion, Tipo, NivelCalidad, Categoria)
VALUES (435, 'JR. MAYNAS # 560', 'RESIDENCIAL', 1, 1);
INSERT INTO Hotel(CodHotel, Direccion, Tipo, NivelCalidad, Categoria)
VALUES (460, 'JR. ORELLANA # 450', 'ECOLOGICO', 3, 3);
INSERT INTO Hotel(CodHotel, Direccion, Tipo, NivelCalidad, Categoria)
VALUES (515, 'JR. AUGUSTO B. LEGUIA # 386', 'FAMILIAR', 3, 2);

INSERT INTO Empleado(CodEmpleado, Nombre, PagoXHora, Profesion,


CodEmpleadoSupervisor)
VALUES (3231, 'O.ANGULO', 17.40 , 'CARPINTERO', 3231);
INSERT INTO Empleado(CodEmpleado, Nombre, PagoXHora, Profesion,
CodEmpleadoSupervisor)
VALUES (1311, 'E.PEREZ', 15.50 , 'ELECTRONICO', 1311);
INSERT INTO Empleado(CodEmpleado, Nombre, PagoXHora, Profesion,
CodEmpleadoSupervisor)
VALUES (1520, 'D.BARRIA', 11.75 , 'FONTANERO', 1520);
INSERT INTO Empleado(CodEmpleado, Nombre, PagoXHora, Profesion,
CodEmpleadoSupervisor)
VALUES (2920, 'S.SABOYA', 10.00 , 'ALBAÑIL', 2920);
INSERT INTO Empleado(CodEmpleado, Nombre, PagoXHora, Profesion,
CodEmpleadoSupervisor)
VALUES (1235, 'A.CELIS', 12.50 , 'ELECTRONICO', 1311);
INSERT INTO Empleado(CodEmpleado, Nombre, PagoXHora, Profesion,
CodEmpleadoSupervisor)
VALUES (1412, 'C.ROJAS', 13.75 , 'FONTANERO', 1520);
INSERT INTO Empleado(CodEmpleado, Nombre, PagoXHora, Profesion,
CodEmpleadoSupervisor)
VALUES (3001, 'J.RAMIREZ', 8.20 , 'CARPINTERO', 3231);

INSERT INTO Asignacion(CodEmpleado, CodHotel, FechaInicio, NumDias)


VALUES (1235, 312,'2013-10-10', 5);
INSERT INTO Asignacion(CodEmpleado, CodHotel, FechaInicio, NumDias)
VALUES (1235, 515,'2013-10-17', 22);
INSERT INTO Asignacion(CodEmpleado, CodHotel, FechaInicio, NumDias)
VALUES (1311, 435,'2013-10-08', 12);
INSERT INTO Asignacion(CodEmpleado, CodHotel, FechaInicio, NumDias)
VALUES (1311, 460,'2013-10-23', 24);
INSERT INTO Asignacion(CodEmpleado, CodHotel, FechaInicio, NumDias)
VALUES (1412, 111,'2013-12-01', 4);
INSERT INTO Asignacion(CodEmpleado, CodHotel, FechaInicio, NumDias)
VALUES (1412, 210,'2013-11-15', 12);
INSERT INTO Asignacion(CodEmpleado, CodHotel, FechaInicio, NumDias)
VALUES (1412, 312,'2013-10-10', 10);
INSERT INTO Asignacion(CodEmpleado, CodHotel, FechaInicio, NumDias)
VALUES (1412, 435,'2013-10-15', 15);
INSERT INTO Asignacion(CodEmpleado, CodHotel, FechaInicio, NumDias)
VALUES (1412, 460,'2013-10-08', 18);
INSERT INTO Asignacion(CodEmpleado, CodHotel, FechaInicio, NumDias)
VALUES (1412, 515,'2013-11-05', 8);
INSERT INTO Asignacion(CodEmpleado, CodHotel, FechaInicio, NumDias)
VALUES (1520, 312,'2013-10-30', 17);
INSERT INTO Asignacion(CodEmpleado, CodHotel, FechaInicio, NumDias)
VALUES (1520, 515,'2013-10-09', 14);
INSERT INTO Asignacion(CodEmpleado, CodHotel, FechaInicio, NumDias)
VALUES (2920, 210,'2013-11-10', 15);
INSERT INTO Asignacion(CodEmpleado, CodHotel, FechaInicio, NumDias)
VALUES (2920, 435,'2013-10-28', 10);
INSERT INTO Asignacion(CodEmpleado, CodHotel, FechaInicio, NumDias)
VALUES (2920, 460,'2013-10-05', 18);
INSERT INTO Asignacion(CodEmpleado, CodHotel, FechaInicio, NumDias)
VALUES (3001, 111,'2013-10-08', 14);
INSERT INTO Asignacion(CodEmpleado, CodHotel, FechaInicio, NumDias)
VALUES (3001, 210,'2013-10-27', 14);
INSERT INTO Asignacion(CodEmpleado, CodHotel, FechaInicio, NumDias)
VALUES (3231, 111,'2013-10-10', 8);
INSERT INTO Asignacion(CodEmpleado, CodHotel, FechaInicio, NumDias)
VALUES (3231, 312,'2013-10-24', 20);
Ejercicio N°01

Crear una Consulta SQL que muestre los nombres de los empleados cuya Pago x Hora este
entre 10 y 12 nuevos soles.

Ejercicio N°02

Crear una Consulta SQL que muestre cuales son las profesiones de los empleados
asignados al hotel número 435.

Ejercicio N°03

Crear una Consulta SQL que muestre por cada empleado el nombre y el de su supervisor.

Ejercicio N°04

Crear una Consulta SQL que muestre los nombre de los empleados asignados a hoteles
tipo “TURISTAS”.

Ejercicio N°05

Crear una Consulta SQL que muestre, ¿Qué empleados reciben un pago por hora mayor
que la de su supervisor.

Ejercicio N°06

Crear una Consulta SQL que muestre, ¿Cuál es el número total de días que se han
dedicado a fontanería en el hotel 312?

Ejercicio N°07

Crear una Consulta SQL que muestre, ¿Cuántos tipos de profesiones diferentes hay?

Ejercicio N°08

Crear una Consulta SQL que muestre, por cada supervisor, ¿Cuál es el pago por hora más
alta que se paga a un empleado que informa a ese supervisor?

Ejercicio N°09

Crear una Consulta SQL que muestre, por cada supervisor que supervisa a más de un
empleado, ¿cuál es el pago por hora más alta que se paga a un empleado que informa a
ese supervisor?

Ejercicio N°10

Crear una Consulta SQL que muestre, por cada tipo de hotel, ¿Cuál es el nivel de calidad
medio de los hoteles con categoría 1? Considérense sólo aquellos tipos de hoteles que
tienen un nivel de calidad máximo no mayor que 3

Ejercicio N°11

Crear una Consulta SQL que muestre, ¿Qué empleados reciben un pago por hora menor
que la del promedio de todos los empleados?

Ejercicio N°12

Crear una Consulta SQL que muestre, ¿Qué empleados reciben un pago por hora menor
que la del promedio de los empleados que tienen su mismo oficio?
Ejercicio N°13

Crear una Consulta SQL que muestre, ¿Qué empleados reciben un pago por hora menor
que la del promedio de los empleados que dependen del mismo supervisor que él?

Ejercicio N°14

Crear una Consulta SQL que muestre, el nombre de los ELECTRONICOS asignados al
hotel 435 y la fecha en la que empezaron a trabajar en él

Ejercicio N°15

Crear una Consulta SQL que muestre, ¿Qué supervisores tienen empleados que tienen un
pago por hora por encima de los 12 soles?

Ejercicio N°16

Crear una Consulta SQL que muestre, una lista de empleados Incrementando en un 5 por
ciento el pago por hora de todos los empleados a los que supervisa el supervisor
“E.PEREZ”.
SOLUCION

Ejercicio N°01

Crear una Consulta SQL que muestre los nombres de los empleados cuya Pago x Hora este
entre 10 y 12 nuevos soles.

Consulta Resultado

SELECT Nombre Nombre


FROM Empleado -------------
WHERE PagoXHora BETWEEN 10 AND 12; D.BARRIA
S.SABOYA

Ejercicio N°02

Crear una Consulta SQL que muestre cuales son las profesiones de los empleados
asignados al hotel número 435.

Consulta Resultado

SELECT Empleado.Profesion Profesion


FROM Empleado INNER JOIN Asignacion ON -------------
Empleado.CodEmpleado = ALBAÑIL
Asignacion.CodEmpleado ELECTRONICO
WHERE Asignacion.CodHotel=435 FONTANERO
GROUP BY Empleado.Profesion;

Ejercicio N°03

Crear una Consulta SQL que muestre por cada empleado el nombre y el de su supervisor.

Consulta Resultado
Empleado Supervisor
SELECT E.Nombre AS Empleado, --------------------------
S.Nombre AS Supervisor A.CELIS E.PEREZ
FROM Empleado E INNER JOIN E.PEREZ E.PEREZ
Empleado S C.ROJAS D.BARRIA
ON S.CodEmpleado = E.CodEmpleadoSupervisor; D.BARRIA D.BARRIA
S.SABOYA S.SABOYA
J.RAMIREZ O.ANGULO
O.ANGULO O.ANGULO

Ejercicio N°04

Crear una Consulta SQL que muestre los nombre de los empleados asignados a hoteles
tipo “TURISTAS”.

Consulta Resultado

SELECT Empleado.Nombre Nombre


FROM Empleado -------------
INNER JOIN Asignacion A.CELIS
ON Empleado.CodEmpleado = C.ROJAS
Asignacion.CodEmpleado D.BARRIA
INNER JOIN Hotel J.RAMIREZ
ON Asignacion.CodHotel = Hotel.CodHotel O.ANGULO
WHERE Hotel.Tipo='TURISTAS' S.SABOYA
GROUP BY Empleado.Nombre;

Ejercicio N°05

Crear una Consulta SQL que muestre, ¿Qué empleados reciben un pago por hora mayor
que la de su supervisor.

Consulta Resultado

SELECT T.Nombre Nombre


FROM Empleado T -------------
INNER JOIN Empleado S ON S.CodEmpleado = C.ROJAS
T.CodEmpleadoSupervisor
WHERE T.PagoXHora > S.PagoXHora;

Ejercicio N°06

Crear una Consulta SQL que muestre, ¿Cuál es el número total de días que se han
dedicado a fontanería en el hotel 312?

Consulta Resultado

SELECT SUM(A.NumDias) AS TotalDias TotalDias


FROM Empleado E -------------
INNER JOIN Asignacion A ON E.CodEmpleado = A.CodEmpleado 27
WHERE E.Profesion='FONTANERO' AND
A.CodHotel=312;

Ejercicio N°07

Crear una Consulta SQL que muestre, ¿Cuántos tipos de profesiones diferentes hay?

Consulta Resultado

SELECT COUNT(DISTINCT Profesion) AS Cantidad Cantidad


FROM Empleado; -------------
4

Ejercicio N°08

Crear una Consulta SQL que muestre, por cada supervisor, ¿Cuál es el pago por hora más
alta que se paga a un empleado que informa a ese supervisor?

Consulta Resultado

SELECT S.Nombre, MAX(E.PagoXHora) AS PagoXHora Nombre PagoXHora


FROM Empleado E --------------------------
INNER JOIN Empleado S ON D.BARRIA 13.75
S.CodEmpleado = E.CodEmpleadoSupervisor E.PEREZ 15.50
GROUP BY S.Nombre; O.ANGULO 17.40
S.SABOYA 10.00

Ejercicio N°09

Crear una Consulta SQL que muestre, por cada supervisor que supervisa a más de un
empleado, ¿cuál es el pago por hora más alta que se paga a un empleado que informa a
ese supervisor?

Consulta Resultado

SELECT S.Nombre, MAX(T.PagoXHora) AS PagoXHora Nombre PagoXHora


FROM Empleado T --------------------------
INNER JOIN Empleado S ON D.BARRIA 13.75
S.CodEmpleado = T.CodEmpleadoSupervisor E.PEREZ 15.50
GROUP BY S.Nombre O.ANGULO 17.40
HAVING COUNT(T.CodEmpleado)>1;

Ejercicio N°10

Crear una Consulta SQL que muestre, por cada tipo de hotel, ¿Cuál es el nivel de calidad
medio de los hoteles con categoría 1? Considérense sólo aquellos tipos de hoteles que
tienen un nivel de calidad máximo no mayor que 3

Consulta Resultado

SELECT Hotel.Tipo, AVG(Hotel.NivelCalidad) AS Tipo Calidad


Calidad --------------------------
FROM Hotel RESIDENCIAL 1
WHERE Hotel.Categoria=1 AND
Hotel.NivelCalidad<3
GROUP BY Hotel.Tipo;

Ejercicio N°11

Crear una Consulta SQL que muestre, ¿Qué empleados reciben un pago por hora menor
que la del promedio de todos los empleados?

Consulta Resultado

SELECT E.Nombre Nombre


FROM Empleado E -------------
WHERE E.PagoXHora < (SELECT AVG(Empleado.PagoXHora) FROM Empleado) A.CELIS
D.BARRIA
OTRA SOLUCION S.SABOYA
J.RAMIREZ
SELECT E.Nombre
FROM Empleado E, (SELECT AVG(Empleado.PagoXHora) AS Promedio
FROM Empleado) P
WHERE E.PagoXHora < P.Promedio;

Ejercicio N°12

Crear una Consulta SQL que muestre, ¿Qué empleados reciben un pago por hora menor
que la del promedio de los empleados que tienen su mismo oficio?

Consulta Resultado

SELECT E.Nombre Nombre


FROM Empleado E INNER JOIN (SELECT Empleado.Profesion, -------------
AVG(Empleado.PagoXHora) AS J.RAMIREZ
Promedio A.CELIS
FROM Empleado D.BARRIA
GROUP BY Empleado.Profesion) P
ON E.Profesion = P.Profesion
WHERE E.PagoXHora < P.Promedio;

Ejercicio N°13

Crear una Consulta SQL que muestre, ¿Qué empleados reciben un pago por hora menor
que la del promedio de los empleados que dependen del mismo supervisor que él?

Consulta Resultado

SELECT E.Nombre Nombre


FROM Empleado E INNER JOIN (SELECT CodEmpleadoSupervisor, -------------
AVG(Empleado.PagoXHora) AS A.CELIS
Promedio D.BARRIA
FROM Empleado J.RAMIREZ
GROUP BY
Empleado.CodEmpleadoSupervisor) P
ON E.CodEmpleadoSupervisor =
P.CodEmpleadoSupervisor
WHERE E.PagoXHora < P.Promedio;

Ejercicio N°14

Crear una Consulta SQL que muestre, el nombre de los ELECTRONICOS asignados al
hotel 435 y la fecha en la que empezaron a trabajar en él

Consulta Resultado

SELECT E.Nombre, A.FechaInicio Nombre FechaInicio


FROM Empleado E INNER JOIN --------------------------
Asignacion A ON E.CodEmpleado = E.PEREZ 2013-10-08
A.CodEmpleado
WHERE E.Profesion='ELECTRONICO' AND
A.CodHotel=435;

Ejercicio N°15

Crear una Consulta SQL que muestre, ¿Qué supervisores tienen empleados que tienen un
pago por hora por encima de los 12 soles?

Consulta Resultado

SELECT Nombre Nombre


FROM Empleado -------------
WHERE CodEmpleado = CodEmpleadoSupervisor AND E.PEREZ
CodEmpleadoSupervisor IN (SELECT CodEmpleadoSupervisor D.BARRIA
FROM Empleado
WHERE PagoXHora>12 AND
CodEmpleado <>
CodEmpleadoSupervisor
);
Nota: en la sub consulta agregamos en el Where “CodEmpleado <> CodEmpleadoSupervisor”, debido a que deben
ser solamente empleados

Ejercicio N°16

Crear una Consulta SQL que muestre, una lista de empleados Incrementando en un 5 por
ciento el pago por hora de todos los empleados a los que supervisa el supervisor
“E.PEREZ”.

Consulta Resultado
SELECT T.Nombre, T.PagoXHora,
(T.PagoXHora + (T.PagoXHora * 5)/100) Nombre PagoXHora PagoXHora_Al_5P
AS PagoXHora_Al_5P ----------------------------------
FROM Empleado T A.CELIS 12.50 13.125000
INNER JOIN Empleado S E.PEREZ 15.50 16.275000
ON S.CodEmpleado = T.CodEmpleadoSupervisor
WHERE S.Nombre='E.PEREZ';

También podría gustarte