Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ejemplo1erParcialLabII Resuelto
Ejemplo1erParcialLabII Resuelto
Parcial 2018
Realice las siguientes consultas sobre la base de datos MANTENIMIENTO perteneciente a una
flota de vehículos de una empresa de remises.
TEMA 1
1. Se quiere saber dentro del año en curso, cuánto fue el total pagado en concepto de
mantenimientos a cada mecánico mensualmente, cuánto fue lo más caro y lo más barato pero
solo aquellos en los que la cantidad de mantenimientos haya superado los 10. Rotule. (15%)
Select me.cod_mecanico Código ,nom_mecanico Nombre,
month(fec_mantenimiento)Mes, sum(monto)‘Total pagado’,
max(monto)‘Más caro’,min(monto)‘Más barato’
From mantenimientos ma,mecanicos me
Where ma.cod_mecanico=me.cod_mecanico
And year(fec_mantenimiento)=year(getdate())
Group by me.cod_mecanico,nom_mecanico,month(fec_mantenimiento)
Having count(*)>0
2. Emitir un listado de mecánicos que realizaron mantenimientos en los dos últimos meses de este
año, a autos fiat, peugeot y chevrolet, cuyos responsables tienen teléfonos o dirección conocidos
y cuyo mantenimiento haya costado entre $1000 y $3000. Ordene por especialidad de mecánico
en forma descendente y luego por nombre.(15%)
Select me.cod_mecanico Código ,nom_mecanico Nombre,Especialidad
From mantenimientos ma,mecanicos me,unidades u,responsables r
Where ma.cod_mecanico=me.cod_mecanico and u.cod_unidad=ma.cod_unidad
And r.cod_responsable=u.cod_responsable
And fec_mantenimiento>=dateadd(month,-2,getdate())
--o bien: datediff(month,fec_mantenimiento,getdate())<=2
And marca in (‘Fiat’, ‘peugeot’, ‘chevrolet’)
And (tel_mecanico is not null or direccion is not null)
And monto between 1000 and 3000
Order by especialidad desc,nombre
3. ¿Cuánto se pagó en concepto de mantenimientos el año pasado y cuál fue el monto promedio
de cada uno? (10%)
Select sum(monto)Total,avg(monto)Promedio
From mantenimientos
Where year(fec_mantenimiento)=year(getdate())-1
4. Se quiere emitir un listado de responsables de unidades y uno de mecánicos pero que el
resultado aparezca en una misma tabla, donde primero se muestren los responsables y luego los
mecánicos ordenados alfabéticamente por nombre. (10%)
Select cod_responsable Código, nombre Nombre, tel_responsable Teléfono,
‘Responsable’ Tipo
From responsables
UNION
Select cod_mecanico, nom_mecanico, tel_mecanico, ‘Mecánico’
From mecanicos
Order by 4 desc, 2
TEMA 2
1. Se quiere saber en los seis últimos meses, cuánto fue el total pagado en concepto de
mantenimientos por cada mecánico mensualmente y cuántos mantenimientos se hicieron, pero
solo aquellos en los que el promedio mensual pagado haya superado los $ 5000. Rotule. (15%)
Select me.cod_mecanico Código ,nom_mecanico Nombre,
year(fec_mantenimiento)Año,month(fec_mantenimiento)Mes,
sum(monto) ‘Total pagado’,count(*)‘Cant.de mantenimientos’
From mantenimientos ma,mecanicos me
Where ma.cod_mecanico=me.cod_mecanico
And fec_mantenimiento>=dateadd(month,-6,getdate())
--o bien: datediff(month,fec_mantenimiento,getdate())<=6
Group by me.cod_mecanico,nom_mecanico,month(fec_mantenimiento)
Having avg(monto)>5000