De qué trata este documento
Ver el texto · 289 palabras
PC 2 - DISEÑO DE BASE DE DATOS
--PREGUNTA1 mostrar cantidad de vehiculos por cliente
select c.nombre, c.dni, count(v.codigo)
from clientes c
inner join vehiculos v
on c.codigo_cliente = v.codigo_cliente
--PREGUNTA2 mostrar lista de tecnicos
select t.codigo_empresa, t.nombre, t.dni, e.codigo_empresa, e.ruc
from tecnico t
inner join empresa e
on t.codigo_empresa = e.codigo_empresa
--PREGUNTA3 mostrar la lista de vehiculos que al menos tengan una orden
select v.placa, md.nombre, mc.nombre, (od.fecha_fin - od_fecha_inicio) as PromedioDias
from vehiculos v
inner join orden od
on v.codigo_vehiculo = od.codigo_vehiculo
inner join modelo md
on v.codigo_modelo = md.codigo_modelo
inner join marca mc
on md.codigo_marca = mc.codigo_marca
--PREGUNTA4 mostrar la lista de repuestos que ha tenido el tiempo de atencion maximo en las
ordenes
select r.nombre, r.precio, r.codigo_categoria, c.nombre
from repuestos r
inner join ordenes_repuesto orp
on r.codigo_repuesto = orp.codigo_repuesto
inner join orden od
on orp.codigo_orden = od.codigo_orden
inner join categorias c
on r.codigo_categoria = c.codigo_categoria
where datediff(day, od.fecha_inicio, od.fecha_fin) = (
select max(datediff(day, od.fecha_inicio, od.fecha_fin))
from orden od
inner join ordenes_repuesto orp
on od.codigo_orden = orp.codigo_orden
where orp.codigo_repuesto = r.codigo_repuesto
--PREGUNTA5 mostrar la lista de tecnicos que poseen mas de 2 especialidades
select t.codigo_tecnico, count(ot.codigo_ordenes), count(distinct ep.codigo_especialidades)
from tecnicos t
inner join tecnicos_especialidades te
on t.codigo_tecnico = te.codigo_tecnico
inner join especialidades ep
on te.codigo_especialidades = ep.codigo_especialidades
inner join ordenes_tecnicos ot
on t.codigo_tecnicos = ot.codigo_tecnicos
group by t.codigo_tecnico
having count(ep.codigo_especialidades) > 2
--PREGUNTA6 crear un procedimiento que muestre ordenes y cantidad de tecnicos asociados a la
reparacion de un vehiculo
create procedure dbo.MorstrarOrdenesConTecnicos
@FechaInicio date,
@FechaFin date,
@NombreServicio nvarchar(30)
as
begin
select od.codigo_orden, od.fecha_inicio, od.fecha_fin, od.nombre_servicio, count(distinct
ot.codigo_tecnico)
from orden od
left join ordenes_tecnicos ot
on od.codigo_orden = ot.codigo_orden
where od.fecha_inicio
between @FechaInicio and @FechaFin
and od.nombre_servicio = @NombreServicio
group by od.codigo_orden, od.fecha_inicio, od.fecha_fin, od.nombre_servicio;
END
El documento completo, con sus imágenes y su formato, está más arriba.
Antes de ponerte a estudiar, mira con quién te conviene llevar el curso: estas son las calificaciones que le pusieron otros estudiantes de UPC.