Questão de Banco de Dados — SQL — CESGRANRIO 2022
Banco de DadosSQL
- Código
- cg016960
- Banca
- CESGRANRIO
- Órgão
- ELETROBRAS-ELETRONUCLEAR
- Ano
- 2022
- Nível
- Superior
- Cargo
- Analista de Sistemas - Aplicação e Segurança de TIC
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?
- ASELECT A.NUMFROM PASSE AWHERE A.NUM_VIAGENS = (SELECT COUNT(*) FROM REG_VIAGEMWHERE NUM = A.NUM) OR A.NUM NOT IN (SELECT NUM FROM REG_VIAGEM)
- BSELECT DISTINCT (A.NUM)FROM PASSE ALEFT JOIN REG_VIAGEM BON A.NUM=B.NUM OR A.NUM NOT IN (SELECT NUM FROM REG_VIAGEM)
- CSELECT A.NUMFROM PASSE A, REG_VIAGEM BWHERE A.NUM_VIAGENS = (SELECT COUNT(*) FROM REG_VIAGEMWHERE NUM = A.NUM) OR A.NUM != B.NUM
- DSELECT A.NUMFROM PASSE AINTERSECTSELECT A.NUMFROM PASSE AWHERE A.NUM NOT IN (SELECT NUM FROM REG_VIAGEM)
- ESELECT NUMFROM PASSEEXCEPTSELECT NUMFROM REG_VIAGEM