Você está na página 1de 2

Faa os exerccios baseando-se nas tabelas abaixo:

agentes(idagente,nome,datacontratacao)
categorias(idcategoria,nome)
cidades(idcidade,nome,idestado)
combustiveis(idcombustivel,nome)
cores(idcor,nome)
estados(idestado,nome,sigla)
infracoes(idinfracao,renavam,data,hora,local,idtipoinfracao,velocidade,idagente,obs)
marcas(idmarca,nome)
modelos(idmodelo,nome,idmarca)
proprietarios(cpf,nome,endereco,idcidade,cep,sexo,data_nasc)
telefones(idtelefone,numero,cpf)
tipoinfracoes(idtipoinfracao,descricao,valor)
veiculos(renavam,chassi,placa,idcor,idmodelo,ano_fab,ano_modelo,idcategoria,cpf)
veiculos_has_combustiveis(renavam, idcombustivel)
1) Liste o renavam, a placa do veculo, data e nome do tipo de infracao das infraes que
ocorreram a partir do dia 01/04/2009.
SELECT V.RENAVAM, V.PLACA, I.DATAHORA, T.DESCRICAO
FROM (VEICULOS V JOIN INFRACOES I ON V.RENAVAM=I.RENAVAM)
JOIN TIPOSINFRACOES T ON I.IDTIPOINFRACAO = T.IDTIPOINFRACAO
WHERE I.DATAHORA>= 2009-04-01;
2) Liste o renavam, a placa do veculo e data das infraes que ocorreram a partir do dia
01/04/2009 e tipo de infrao igual a 5.
SELECT V.RENAVAM, V.PLACA, I.DATAHORA
FROM (VEICULOS V JOIN INFRACOES I ON V.RENAVAM=I.RENAVAM)
WHERE I.DATAHORA>= 2009-04-01 AND I.IDTIPOINFRACAO = 5;
3) Liste o renavam, o nome do proprietrio e data das infraes que ocorreram entre os dias
01/03/2009 e 31/03/2009 e tipo de infrao igual a 5
SELECT v.renavam , p.nome , i.datahora
FROM (infracoes i JOIN veiculos v ON i.renavam=v.renavam)
JOIN proprietarios p ON p.cpf=v.cpf
WHERE idtipoinfracao=5 AND i.datahora between "2009-03-01" AND "2010-03-31" ;
4) Exiba placa, nome do modelo e a nome da cor dos veculos que a placa comea com JRO.
SELECT v.placa , m.nome , c.nome
FROM (cores c JOIN veiculos v ON v.idcor=c.idcor)
JOIN modelos m ON m.idmodelo=v.idmodelo
WHERE v.placa LIKE "JRO%";
5) Exiba placa, nome do modelo e a nome da cor dos veculos que a placa tem o terceiro dgito Z e
termina com 9.
SELECT v.placa , m.nome , c.nome
FROM (cores c JOIN veiculos v ON v.idcor=c.idcor)
JOIN modelos m ON m.idmodelo=v.idmodelo
WHERE v.placa LIKE "__Z%9";

6) Selecione nome da marca e nome do modelo, dos modelos o cdigo da marca seja igual a 01,
05, 12, 25, 33 ou 42, ordenado por idmarca e nome do modelo.
SELECT ma.nome, mo.nome
FROM (modelos mo JOIN marcas ma ON ma.idmarca=mo.idmarca)
WHERE mo.idmarca in(1, 5, 12, 25, 33, 42)
ORDER BY mo.idmarca,mo.nome ;
7) Mostre a quantidade de veculos por tipo de combustvel para a categoria igual a automvel.
SELECT co.NOME, COUNT(*)
FROM ((combustiveis co JOIN veiculos_has_combustiveis vc ON co.idcombustivel=
vc.idcombustivel)
JOIN veiculos v ON v.renavam=vc.renavam)
JOIN categorias ca ON ca.idcategoria=v.idcategoria
where ca.nome="automvel"
GROUP BY co.nome;
8) Mostre a quantidade de veculos por tipo de combustvel (exiba o nome do tipo de combustvel)
para combustveis cuja quantidade seja maior do que 10.
SELECT c.NOME, COUNT(*)
from ((combustiveis c JOIN veiculos_has_combustiveis vc ON
c.idcombustivel= vc.idcombustivel)
JOIN veiculos v ON v.renavam=vc.renavam)
GROUP BY C.idcombustivel
HAVING COUNT(*)>10
9) Mostre a quantidade de infraes de cada tipo de infrao (exiba a descrio do tipo de infrao)
ocorrida em 2009 somente para tipos de infraes que a quantidade seja maior do que 5.
SELECT t.descricao, COUNT(*)
FROM tiposinfracoes t JOIN infracoes i ON i.idtipoinfracao=t.idtipoinfracao
WHERE datahora between 2009-01-01 and 2009-12-31
GROUP BY i.idtipoinfracao
having count(*)>5 ;

Você também pode gostar