a) Selecionar a placa do veículo e o nome do proprietário para os veículos que tiveram
infrações do tipo “GRAVE” no ano de 2003.
SELECT V.PLACA, P.NOME
FROM R9_VEICULO V, R9_PROPRIETARIO P, R9_INFRACAO_VEICULO IV, R9_INFRACAO I, R9_TIPOINFRACAO T
WHERE V.PLACA = IV.PLACA AND P.CPF = V.CPFPROP AND I.CODIGO = IV.CODINFRACAO AND
T.CODIGO = I.CODTIPO AND T.DESCTIPO = 'GRAVE' AND TO_CHAR(IV.DATA, 'YYYY') = '2003';
b) Selecionar o nome do proprietário e o valor total de suas multas, para os proprietários
cujo valor total das multas seja superior a R$1000,00.
SELECT P.NOME, SUM(IV.VALOR) AS VALORTOTAL
FROM R9_PROPRIETARIO P, R9_INFRACAO_VEICULO IV, R9_VEICULO V
WHERE P.CPF = V.CPFPROP AND V.PLACA = IV.PLACA
GROUP BY P.NOME
HAVING SUM(IV.VALOR) > 1000;
c) Selecionar o(s) nome(s) do(s) proprietário(s) que possui(em) o valor total máximo de
multas.
SELECT P.NOME
FROM R9_PROPRIETARIO P, R9_VEICULO V, R9_INFRACAO_VEICULO IV
WHERE P.CPF = V.CPFPROP AND V.PLACA = IV.PLACA
GROUP BY P.NOME
HAVING SUM(IV.VALOR) = (SELECT MAX(TOTAL)
FROM ( SELECT SUM(IV.VALOR) TOTAL
FROM R9_INFRACAO_VEICULO IV, R9_PROPRIETARIO P, R9_VEICULO V
WHERE P.CPF = V.CPFPROP AND V.PLACA = IV.PLACA
GROUP BY P.NOME));
d) Selecionar o nome dos proprietários que não cometeram infrações graves nos últimos 3
anos.
SELECT P.NOME
FROM R9_PROPRIETARIO P
MINUS
SELECT P.NOME
FROM R9_VEICULO V, R9_PROPRIETARIO P, R9_INFRACAO_VEICULO IV, R9_INFRACAO I, R9_TIPOINFRACAO T
WHERE V.PLACA = IV.PLACA AND
P.CPF = V.CPFPROP AND I.CODIGO = IV.CODINFRACAO AND
T.CODIGO = I.CODTIPO AND T.DESCTIPO = 'GRAVE' AND
MONTHS_BETWEEN(SYSDATE, IV.DATA) < 36;
e) Selecionar a placa dos veículos cujos proprietários sejam de “BELO HORIZONTE” e que não tenham infrações no ano de 2003.
SELECT V.PLACA FROM R9_VEICULO V MINUS SELECT V.PLACA
FROM R9_VEICULO V, R9_PROPRIETARIO P, R9_INFRACAO_VEICULO IV, R9_INFRACAO I WHERE V.PLACA = IV.PLACA AND P.CPF = V.CPFPROP AND I.CODIGO = IV.CODINFRACAO AND P.CIDADE = 'BELO HORIZONTE' AND TO_CHAR(IV.DATA, 'YYYY') = '2003';
f) Selecionar a descrição das infrações do tipo “LEVE” que foram cometidas pelo menos 2 vezes no ano de 2003.
SELECT I.DESCINFRACAO FROM R9_INFRACAO I, R9_INFRACAO_VEICULO IV, R9_TIPOINFRACAO T WHERE I.CODIGO = IV.CODINFRACAO AND T.CODIGO = I.CODTIPO AND T.DESCTIPO = 'LEVE' AND TO_CHAR(IV.DATA, 'YYYY') = '2003' GROUP BY I.DESCINFRACAO HAVING COUNT(*)>=2;
g) Selecionar a placa, a cor, e o ano dos veículos emplacados em “BELO HORIZONTE”
ou que não cometeram infrações em 2003.
SELECT V.PLACA, V.COR, V.ANO
FROM R9_VEICULO V, R9_INFRACAO_VEICULO IV, R9_INFRACAO I, R9_PROPRIETARIO P
WHERE P.CPF = V.CPFPROP AND
V.PLACA = IV.PLACA AND I.CODIGO = IV.CODINFRACAO AND
P.CIDADE = 'BELO HORIZONTE' OR (TO_CHAR(IV.DATA, 'YYYY') <> '2003');
h) Selecionar o nome dos proprietários que cometeram pelo menos uma infração, mas que
não cometeram infrações do tipo “GRAVISSIMA”.
SELECT DISTINCT P.NOME
FROM R9_VEICULO V, R9_PROPRIETARIO P, R9_INFRACAO I, R9_TIPOINFRACAO TI, R9_INFRACAO_VEICULO IV
WHERE P.CPF = V.CPFPROP AND
V.PLACA = IV.PLACA AND IV.CODINFRACAO = I.CODIGO AND I.CODTIPO = TI.CODIGO
MINUS
SELECT P.NOME
FROM R9_VEICULO V, R9_PROPRIETARIO P, R9_INFRACAO I, R9_TIPOINFRACAO TI, R9_INFRACAO_VEICULO IV
WHERE P.CPF = V.CPFPROP AND
V.PLACA = IV.PLACA AND IV.CODINFRACAO = I.CODIGO AND
I.CODTIPO = TI.CODIGO AND TI.DESCTIPO = 'GRAVISSIMA';
i) Selecionar a placa do veículo, o nome do proprietário, e a data da infração para as
infrações cuja pontuação seja superior a 5 pontos.
SELECT V.PLACA, P.NOME, IV.DATA
FROM R9_VEICULO V, R9_PROPRIETARIO P, R9_INFRACAO I, R9_TIPOINFRACAO TI, R9_INFRACAO_VEICULO IV
WHERE P.CPF = V.CPFPROP AND
V.PLACA = IV.PLACA AND IV.CODINFRACAO = I.CODIGO AND
I.CODTIPO = TI.CODIGO AND TI.PONTUACAO > 5;
j) Selecionar o nome dos proprietários que cometeram pelo menos uma infração, mas cujo valor total de suas infrações não ultrapasse R$600,00.
SELECT P.NOME
from R9_PROPRIETARIO P, R9_VEICULO V, R9_INFRACAO_VEICULO IV
WHERE P.CPF = V.CPFPROP
AND V.PLACA = IV.PLACA
GROUP BY P.NOME
HAVING SUM(IV.VALOR) < 600;
Nenhum comentário:
Postar um comentário