Procura

Banco de dadosSql (3)


EXERCÍCIOS - Exercício 123

  • (CESGRANRIO 2022)

O controle diário da utilização de passes de metrô em uma cidade é feito por programas que utilizam um banco de dados composto pelas seguintes tabelas:
CREATE TABLE PASSE (             NUM                              INTEGER                         NOT NULL,             DATA_EXP                    DATE                                NOT NULL,             NUM_VIAGENS            INTEGER                         NOT NULL,             PRIMARY KEY (NUM))
CREATE TABLE REG_VIAGEM (             NUM                              INTEGER                        NOT NULL,             NUM_ROLETA              INTEGER                        NOT NULL,             DATA_VIAGEM DATE                       NOT NULL,             FOREIGN KEY (NUM)                        REFERENCES PASSE (NUM))
A tabela PASSE contém uma linha para cada passe vendido pela empresa que administra o metrô. A coluna DATA_EXP informa a data de emissão do passe, e a coluna NUM_VIAGENS informa o número de viagens em que o passe poderá ser usado (número máximo de viagens). Este número não sofre alteração ao longo do tempo.
A tabela REG_VIAGEM contém uma linha para cada viagem em que o passe foi usado. A coluna NUM_ROLETA informa a roleta na qual o passe foi inserido, e a coluna DATA_VIAGEM informa a data em que o usuário inseriu o passe na roleta.
Qual consulta SQL permite obter os números dos passes que nunca foram usados, juntamente com os números dos passes que já esgotaram o número de viagens realizadas?



A)

SELECT A.NUM

FROM PASSE A

WHERE A.NUM_VIAGENS = (SELECT COUNT(*) FROM REG_VIAGEM

WHERE NUM = A.NUM) OR A.NUM NOT IN (SELECT NUM FROM REG_VIAGEM)



B)

SELECT DISTINCT (A.NUM)

FROM PASSE A

LEFT JOIN REG_VIAGEM B

ON A.NUM=B.NUM OR A.NUM NOT IN (SELECT NUM FROM REG_VIAGEM)



C)

SELECT A.NUM

FROM PASSE A, REG_VIAGEM B

WHERE A.NUM_VIAGENS = (SELECT COUNT(*) FROM REG_VIAGEM

WHERE NUM = A.NUM) OR A.NUM != B.NUM



D)

SELECT A.NUM

FROM PASSE A

INTERSECT

SELECT A.NUM

FROM PASSE A

WHERE A.NUM NOT IN (SELECT NUM FROM REG_VIAGEM)



E)

SELECT NUM

FROM PASSE

EXCEPT

SELECT NUM

FROM REG_VIAGEM




Próximo:
EXERCÍCIOS - Exercício 124

Vamos para o Anterior: Exercício 122

Tente Este: Exercício 169

Primeiro: Exercício 1

VOLTAR ao índice: Banco de dados






Cadastre-se e ganhe o primeiro capítulo do livro.
+
((ts_substr_ig=0.00ms))((ts_substr_id=2.67ms))((ts_substr_m2=0.00ms))((ts_substr_p2=1.32ms))((ts_substr_c=1.20ms))((ts_substr_im=0.89ms))
((total= 6ms))