Download INSERT INTO Trabajador (IdTrabajador,Nombre

Document related concepts
no text concepts found
Transcript
PRÁCTICA 5
Problema
La empresa contratista “INGENIERÍA Y ACABADOS S.A de C.V”, requiere que se elabore una base
de datos con la información que más adelante se presenta.
TRABAJADOR
IdTrabajador
230
576
234
76
234
542
646
233
Nombre
Tarifa
Alquezada María Elena
Marquez Patricia
Vazquez Eduardo
Gutiérrez Lucia
Torres Miguel
Espinoza Isabel
Sánchez Raquel
García Hector Yonic
56.5
23.2
78.9
120
34.4
23.2
23.2
100
Oficio
Plomero
Electricista
Electricista
Arquitecto
Carpintero
Albañil
Albañil
Arquitecto
IdSupervisor
76
234
76
NivelCalidad
Categoría
76
233
233
120
EDIFICIO
IdEdificio
111
210
312
435
460
515
Dirección
Rosendo Marquez 16
4 Pte. 2354
Calle Albatros 2
Hidalgo 1232
Callejon Emiliano Z.
<Pendiente>
Tipo
Oficina
Oficina
Oficina
Comercio
Almacen
Residencia
4
3
2
1
3
3
ASIGNACIÓN
Trabajador
Edificio
230
576
234
76
234
234
76
FechaInicio
111
210
312
435
111
210
312
13/02/2009
03/10/2009
30/11/2009
02/01/2010
13/02/2009
03/10/2009
30/11/2009
Dias
14
13
12
11
14
13
12
1
1
2
1
3
2
234
542
646
233
76
234
76
233
233
233
233
233
435
435
460
515
460
460
515
111
460
210
210
435
02/01/2010
02/01/2010
02/01/2010
01/12/2010
30/11/2009
15/01/2010
20/09/2009
17/10/2009
17/01/2010
11
14
13
12
11
14
10
3
5
5
1
2
Ya se construyó el script para base de datos pero está marcando errores en alguna parte del
mismo.
Al final de todo, a la empresa contratista le interesa una serie de datos que se agrega en la tabla
de abajo. La tabla deberá ser enviada al correo [email protected], a más tardar cinco días
después de la publicación de éste documento.
Información requerida.
Enunciado
0. Mostrar el nombre de todos
los trabajadores
1.
2.
3.
4.
5.
6.
7.
8.
Nombre de los trabajadores
cuya tarifa sea entre 50 y
100
¿Cuales son los oficios de los
trabajadores asignados al
edificio 435?
Indicar el nombre de todos
los trabajadores y de su
supervisor
Nombre de los trabajadores
asignados a oficinas
¿Qué trabajadores reciben
una tarifa por hora mayor
que la de su supervisor?
¿Cuál es el número total de
días que se han dedicado a
plomería en el edificio 111?
¿Cuántos tipos de oficio hay?
Para cada supervisor ¿Cuál
es la tarifa por hora más alta
que se paga a un trabajador
que informa a ese
Instrucción SQL (Script)
Select Nombre
from Trabajador
Datos Resultantes
Gutiérrez Lucia
Alquezada María Elena
García Hector Yonic
Vazquez Eduardo
Espinoza Isabel
Marquez Patricia
Sánchez Raquel
supervisor?
9. Para cada arquitecto. ¿Cuál
es la tarifa más alta que paga
a un trabajador?
10. Para cada tipo de edificio.
¿Cuál es el nivel de calidad
medio de los edificios con
categoría 1? Considérese
sólo aquellos tipos de
edificios que tienen un nivel
de calidad máximo no mayor
de 3.
11. ¿Qué trabajadores reciben
una tarifa por hora menor
que la del promedio?
12. ¿Qué trabajadores reciben
una tarifa por hora menor
que la del promedio de los
trabajadores que tienen su
mismo oficio?
13. Seleccione el nombre de los
electricistas asignados al
edificio 210 y la fecha en la
que empezaron a trabajar en
él.
14. Muestre toda la información
de los trabajadores excepto
su tarifa y guárdelo en una
tabla nueva.
15. Muestre los nombres de los
electricistas, la dirección de
los edificios donde han
trabajado el año pasado y las
fechas de esas asignaciones.
Script de base de datos
Create DataBase Practica5
go
use Practica5
go
Create table Trabajador (
IdTrabajador smallint not null,
nombre varchar (40),
tarifa float,
oficio varchar (15) default 'Operador',
IdSupervisor smallint null,
Constraint PK_Trabajador Primary Key (IdTrabajador),
Constraint FK_Trabajador_Supervisor Foreign Key (IdSupervisor)
References Trabajador (IdTrabajador)
)
Create table Edificio (
IdEdificio smallint not null,
direccion varchar (20),
tipo char(10) default ('Oficina'),
nivelCalidad tinyint,
categoria smallint,
Constraint PK_Edificio Primary Key (IdEdificio),
Constraint Ck_tipo Check (tipo in ('Oficina','Comercio','Almacen','Residencia'),
Constraint Ck_NivelCalidad Check (nivelCalidad>0 and nivelCalidad<9),
Constraint Ck_categoria Check (categoria>0 and categoria<=5),
)
Create table Asignacion (
trabajador
smallint,
edificio smallint,
fechaInicio datetime Default (getdate()),
numeroDias
int,
Constraint PK_Asignacion Primary Key (trabajador,edificio,fechaInicio),
Constraint FK_Asignacion_Trabajador Foreign Key (Trabajador)
References Trabajador(IdTrabajador),
Constraint FK_Asignacion_Edificio Foreign Key (Edificio)
References Edificio(Idedificio),
Constraint Ck_numeroDias Check (numeroDias>0),
)
INSERT INTO Trabajador (IdTrabajador,Nombre,Tarifa,Oficio)values (76,'Gutiérrez Lucia' ,120,'Arquitecto')
INSERT INTO Trabajador (IdTrabajador,Nombre,Tarifa,Oficio,IdSupervisor)values (230,'Alquezada María Elena'
,56.5,'Plomero',76)
INSERT INTO Trabajador (IdTrabajador,Nombre,Tarifa,Oficio,IdSupervisor)values (234,'Vazquez Eduardo'
,78.9,'Electricista',76)
INSERT INTO Trabajador (IdTrabajador,Nombre,Tarifa,Oficio,IdSupervisor)values (576,'Marquez Patricia'
,23.2,'Electricista',234)
INSERT INTO Trabajador (IdTrabajador,Nombre,Tarifa,Oficio,IdSupervisor)values (234,'Torres Miguel',34.4,'Carpintero',76)
INSERT INTO Trabajador (IdTrabajador,Nombre,Tarifa,Oficio,IdSupervisor)values (233,'García Hector Yonic'
,100,'Arquitecto',76)
INSERT INTO Trabajador (IdTrabajador,Nombre,Tarifa,Oficio,IdSupervisor)values (542,'Espinoza Isabel' ,23.2,'Albañil',233)
INSERT INTO Trabajador (IdTrabajador,Nombre,Tarifa,Oficio,IdSupervisor)values (646,'Sánchez Raquel' ,23.2,'Albañil',233)
INSERT INTO Edificio (IdEdificio,direccion,tipo,nivelCalidad,categoria) VALUES (111,'Rosendo Marquez 16','Oficina',4,1)
INSERT INTO Edificio (IdEdificio,direccion,tipo,nivelCalidad,categoria) VALUES (210,'4 Pte. 2354','Oficina',3,1)
INSERT INTO Edificio (IdEdificio,direccion,tipo,nivelCalidad,categoria) VALUES (312,'Calle Albatros 2','Oficina',2,2)
INSERT INTO Edificio (IdEdificio,direccion,tipo,nivelCalidad,categoria) VALUES (435,'Hidalgo 1232','Comercio',1,1)
INSERT INTO Edificio (IdEdificio,direccion,tipo,nivelCalidad,categoria) VALUES (460,'Callejon Emiliano Z.','Almacen',3,3)
INSERT INTO Edificio (IdEdificio,direccion,tipo,nivelCalidad,categoria) VALUES (515,'<Pendiente>','Residencia',3,2)
GO
INSERT INTO Asignacion (trabajador,edificio,fechaInicio,numeroDias) VALUES (230,111,convert(datetime,'13/02/2009'),14)
INSERT INTO Asignacion (trabajador,edificio,fechaInicio,numeroDias) VALUES (576,210,convert(datetime,'03/10/2009'),13)
INSERT INTO Asignacion (trabajador,edificio,fechaInicio,numeroDias) VALUES (234,312,convert(datetime,'30/11/2009'),12)
INSERT INTO Asignacion (trabajador,edificio,fechaInicio,numeroDias) VALUES (76,435,convert(datetime,'02/01/2010'),11)
INSERT INTO Asignacion (trabajador,edificio,fechaInicio,numeroDias) VALUES (234,111,convert(datetime,'13/02/2009'),14)
INSERT INTO Asignacion (trabajador,edificio,fechaInicio,numeroDias) VALUES (234,210,convert(datetime,'03/10/2009'),13)
INSERT INTO Asignacion (trabajador,edificio,fechaInicio,numeroDias) VALUES (76,312,convert(datetime,'30/11/2009'),12)
INSERT INTO Asignacion (trabajador,edificio,fechaInicio,numeroDias) VALUES (234,435,convert(datetime,'02/01/2010'),11)
INSERT INTO Asignacion (trabajador,edificio,fechaInicio,numeroDias) VALUES (542,435,convert(datetime,'02/01/2010'),14)
INSERT INTO Asignacion (trabajador,edificio,fechaInicio,numeroDias) VALUES (646,460,13)
INSERT INTO Asignacion (trabajador,edificio,fechaInicio,numeroDias) VALUES (233,515,12)
INSERT INTO Asignacion (trabajador,edificio,fechaInicio,numeroDias) VALUES (76,460,convert(datetime,'02/01/2010'),11)
INSERT INTO Asignacion (trabajador,edificio,numeroDias) VALUES (234,460,14)
INSERT INTO Asignacion (trabajador,edificio,fechaInicio,numeroDias) VALUES (76,515,convert(datetime,'01/12/2010'),10)
INSERT INTO Asignacion (trabajador,edificio,fechaInicio,numeroDias) VALUES (233,111,convert(datetime,'30/11/2009'),3)
INSERT INTO Asignacion (trabajador,edificio,fechaInicio,numeroDias) VALUES (233,460,convert(datetime,'15/01/2010'),5)
INSERT INTO Asignacion (trabajador,edificio,fechaInicio,numeroDias) VALUES (233,210,convert(datetime,'20/09/2009'),5)
INSERT INTO Asignacion (trabajador,edificio,fechaInicio,numeroDias) VALUES (233,210,convert(datetime,'17/10/2009'),1)
INSERT INTO Asignacion (trabajador,edificio,fechaInicio,numeroDias) VALUES (233,435,convert(datetime,'17/01/2010'),2)