You are on page 1of 4

create database TRANSPORTE

create table TERMINAL(


Te_CodiTerm char(6) primary key not null,
Te_DireTerm varchar(30),
Te_NombTerm varchar(30)
)

create table FLOTA(
Fl_CodiFlot char(8) primary key not null,
Fl_NomFlot varchar(35),
Fl_CodiTerm char(6) references TERMINAL not null)

create table BUSES(
bu_Placa char (8) primary key not null,
bu_CodiFlot char (8) references FLOTA not null,
bu_Capacidad int,
bu_FechFabri datetime,
bu_Tipo tinyint
)

create table RUTAS(
Ru_CodiRuta tinyint primary key not null,
Ru_NombRuta varchar(35),
Ru_ValoPasaj money
)

create table CONDUCTORES(
Co_CodiConduc int primary key not null,
Co_NombConduc varchar(35),
Co_DireConduc varchar(35),
Co_FechaNaci datetime
)

create table VIAJES(
Vi_NumeVuelta int primary key not null,
Vi_Placa char(8) references BUSES not null,
Vi_CodiRuta tinyint references RUTAS not null,
Vi_NumePasajero int,
Vi_FechaViaje datetime,
Vi_CodiConduc int references CONDUCTORES not null,
Vi_ValoPasaj money
)


TALLER PRACTICA TERMINALUTILIZANDO TRANSACT-SQL
1.
Restaurar la base de datos Terminal
2.
Consultar por cada conductor cdigo, nombre y edad. nicamentepara conductores mayores de 50
aos y cuyo nombre comience porPARRA.
3.
Consultar por cada bus su placa, capacidad y el valor promedio de lospasajes para los viajes realizados
durante los ltimos dos meses.
4.
Realizar una consulta que nos permita conocer la placa del bus,cdigo de la flota,
y nmero de pasajeros transportados en general esdecir, en todos los viajes que haya realizado.
nicamente para busescuya capacidad sea mayor de 45 pasajeros.
5.
Consultar de cada conductor su nombre, direccin, total recaudado en viajes y su pago. El pago es el 20%
del valor recaudado en susviajes.
6.
Realizar una consulta que permita mostrar cdigo de la flota,descripcin de la flota.
Solo par aquellas flotas cuya descripcin seaBRASILIA.
7.
Realizar una consulta que permita mostrar el Cdigo del conductor,nombre del conductor,
fecha de nacimiento, direccin, telfono. Solopara aquellos conductores cuya fecha de nacimiento
sea el mes deenero.
8.
Consultar por cada conductor nombre del conductor, placa del bus yvalor recaudado en pagos el da 3 de
enero de 2006.

9.
Consultar la placa de cada bus, nmero de pasajeros que llevan encada vuelta. Organizarlo por tipo de bus.
10.
Consultar la placa del bus, que ms viaje haya hecho durante el mesanterior.
11.
Consultar el nombre de cada conductor, la placa del bus. Solo paraaquellos conductores cuyo nombre
comience con la letra "P".
12.
Realizar una consulta que muestre el cdigo de la ruta, descripcinde la ruta y total recaudado en pasaje

select co_codiconduc, co_nombconduc,(2010 - year (Co_FechaNaci))as Edad from Conductores
where co_nombconduc like 'parra%' and (2010 - year (Co_FechaNaci)) > 50;

select bu_placa, bu_capacidad,
avg (vi_valopasaj) as Prom_Pasajes,MONTH(Vi_FechaViaje) as Mes from Buses B inner join Viajes V
on B.bu_placa = V.vi_placa group by bu_placa, bu_capacidad, MONTH(Vi_FechaViaje)order by
MONTH(Vi_FechaViaje)
desc

select bu_placa, bu_codiflot, SUM (vi_numepasajero)as Pasajeros from Buses B inner join Viajes V
on B.bu_placa = V.vi_placa where bu_capacidad > 45 group by bu_placa, bu_codiflot

select co_nombconduc, co_direconduc, (vi_numepasajero * vi_valopasaj)as Recuado,
(((vi_numepasajero * vi_valopasaj)*20)/100) as Sueldo from Conductores C
inner join Viajes v on C.co_codiconduc = v.vi_codiconduc group by co_nombconduc, co_direconduc,
(vi_numepasajero * vi_valopasaj),(((vi_numepasajero * vi_valopasaj)*20)/100);


select fl_codiflot, fl_nomflot from Flota where fl_codiflot like 'brasilia%'

select * from Conductores where (MONTH(Co_FechaNaci))= 01 select co_nombconduc, vi_placa,
SUM (vi_valopasaj) as Recaudo, Vi_FechaViaje from Conductores C inner join Viajes v
on C.co_codiconduc = v.vi_codiconduc where MONTH( Vi_FechaViaje) = 03 and DAY(Vi_FechaViaje)= 06
and YEAR(Vi_FechaViaje) = 2006 group by co_nombconduc, vi_placa, Vi_FechaViaje;

select bu_placa, vi_numepasajero, bu_tipo from Buses B inner join Viajes V on
B.bu_placa = V.vi_placa order by bu_tipo;

select bu_placa, Vi_NumeVuelta, Vi_FechaViaje from Buses B inner join Viajes V on
B.bu_placa = V.vi_placa where MONTH(Vi_FechaViaje) = 02 order by Vi_NumeVuelta desc


select co_nombconduc, vi_placa from Conductores C inner join Viajes v
on C.co_codiconduc = v.vi_codiconduc where co_nombconduc like 'p%'group by co_nombconduc, vi_placa

select ru_codiruta,ru_nombruta, sum(ru_valopasaj * vi_numepasajero) as Recaudo from Rutas R inner join
Viajes V on R.ru_codiruta = V.vi_codiruta group by ru_codiruta, ru_nombruta


Resuelva los puntos planteados en este taller, tomando como base el documento Subconsultas.pdf. Al finalizar la sesin de
clase remita el documento, de acuerdo con las indicaciones del instructor. (1 hora)
SUBCONSULTAS COMO TABLA DERIVADA
Consulta para visualizar el codigo de la orden y el codigo del cliente
USE northwind SELECT orderid, customerid FROM orders GO
LA SUBCONSULTA QUEDARIA
USE northwind SELECTT.orderid,T.customerid FROM ( SELECT orderid, customerid FROMorders) AS T GO
1.
De acuerdo con su analisis concluya cul seria el objetivo de realizar sub consultas como una tabla derivada y en que caso
usted la utilizaria, escriba un ejemplo para hacerlo.
SUBCONSULTAS COMO EXPRESION
Se desea visual i zar el nombre del producto, precio unitario, preciopr omedi o de t odos l os
pr oduct os y l a di f er enci a quehay ent r e el pr eci o pr omedi o y el pr eci o del pr oduct o, par a l
os pr oduct os que pertenecen a la categora 6.
Inicialmente podriamos construir la siguiente sintaxis


USEnorthwindselectProductName,UnitPrice, avg (UnitPrice)asprecioProm,unitprice-
avg (UnitPrice)asdiferenciafromProductswhereCategoryID=6group byProductName,UnitPriceGO

sin embargo, el planteamiento se resuelve de la siguiente manera:
USEnorthwindselectProductName,UnitPrice, (select avg(UnitPrice) fromProducts)asPrecioPromedio, UnitPrice-
(select AVG(UnitPrice)fromProducts) asdiferenciafromproducts where CategoryID=6;



SOLUCIN
1. De acuer do con su anal i si s concl uya cul ser i a el obj et i vo de
r eal i zar subconsultas como una tabla derivada y en que caso usted la
utilizaria,escriba un ejemplo para hacerlo.

Segn mi punto de vista el objetivo de las Subconsultas es ver el pasoa paso de lo que se
esta haciendo.Son utilies cuando una consulta depende del resultado de otra consulta.

SELECT Clientes. Compaa, Clientes.Telfono
FROM Clientes

WHERE EXISTS (SELECT * FROM Pedidos WHERE Pedidos.IdPedido = Clientes.IdCliente)

2.Describa con sus propias palabras cual es la diferencia entre lasconsultas y por
qu deberiamos involucrar una subconsulta paraobtener el resultado deseado.Derivada:
Esta es usada para hacer una subconsulta en la clausulaFrom.

Expresin:
Es usada con la clausulas Where
.Correlacionada:
Hace un subconsul t a por cada f i l a de l a consul t aexterna.
3. En la sub consulta hay una condicion redactada as:
WHEREor1.orderid=od.orderid

Interprtela y con sus propias palabras descrbala.(qu se est haciendoy cul es la funcion
que cumple dentro de la subconsulta?), redacte lasintaxis lgica de este tipo de
condision y verifique si en una consultaconvencional se puede utilizar de la
misma manera.
Esta clausulas nos est imponiendo la condicin de que los datos deorderid deben ser
iguales en las dos tablas. Y si no se cumple no sepuede mostrar ningn resultado.Where od.

ProductID = p.

ProductID

4. Implemente en alguna de las tres sentencias sql anteriores, la forma demostrar; ademas, el
codigo del producto y la cantidad comprada; expliquesu decisin.

USEnorthwindSELECTod.orderid,customerid, ProductID,
QuantityFROMordersASor1inner join[ or der det ai l s] ASodonor1.OrderID=od.OrderIDwhereQuantity >
20andod.ProductID=23GO

You might also like