Pular para o conteúdo principal

Questão de Banco de Dados — Oracle — FCC 2025

Banco de DadosOracle
Código
fc073215
Banca
FCC
Órgão
Prefeitura de São Paulo - SP
Ano
2025
Nível
Superior
Cargo
Analista de Planejamento e Desenvolvimento Organizacional Tecnologia da Informação e Comunicação
A Secretaria Municipal de Mobilidade e Trânsito de uma Prefeitura solicitou um estudo para determinar a melhor rota entre dois bairros (A e B) considerando diversos fatores, tais como distância, tempo estimado de viagem, condições da estrada e custo docombustível. Os dados estão nas duas tabelas seguintes de um Banco de Dados Relacional Oracle:• Bairros: Contém informações sobre cada bairro, Incluindo um ID único, nome e coordenadas geográficas.• Rotas: Contém informações sobre as rotas existentes entre os bairros, como ID da rota, bairro de origem, bairro de destino, distância, tempo estimado, condição da estrada e custo estimado.Em uma consulta utilizando INNER JOIN, a expressão SOL correta para encontrar a rota mais eficiente entre dois bairros específicos, com base nos critérios definidos pelo órgão, é
  1. ASELECT r.id_rota, r.distancia, r.tempo_estimado FROM ROTAS r INNER JOIN BAIRROS b ON r.bairro_origem = b.id_bairro WHERE b. nome = 'Bairro A' AND r.bairro_destino= 'Bairro B' ORDER BY r.distancia ASC, r. tempo_estimado ASC;
  2. BSELECT INNER JOIN r.id_rota, r.distancia, r.tempo_estimado FROM ROTAS r WHERE bairro_origem = 'Bairro A' AND bairro_destino = 'Bairro B' ORDER BY r.distancia ASC;
  3. CSELECT r.id_rota, r.distancia, r.tempo_estimado FROM ROTAS r INNER JOIN BAIRROS b ON r.bairro_origem = b.id_bairro WHERE b. nome = 'Bairro A';
  4. DSELECT * FROM ROTAS WHERE bairro_origem = 'Bairro A' AND bairro_destino ='Bairro B' AND MIN (r.distancia) INNER JOIN ROTAS AND BAIRROS;
  5. ESELECT r.id_rota, MIN (r.distancia) FROM ROTAS r INNER JOIN BAIRROS b ON r.bairro_origem = b.id_bairro WHERE b .nome = 'Bairro A' GROUP BY r.id_rota;
Revelar gabarito e comentário

GabaritoA — SELECT r.id_rota, r.distancia, r.tempo_estimado FROM ROTAS r INNER JOIN BAIRROS b ON r.bairro_origem = b.id_bairro WHERE b. nome = 'Bairro A' AND r.bairro_destino= 'Bairro B' ORDER BY r.distancia ASC, r. tempo_estimado ASC;

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Consulta SQL com INNER JOIN — Rota mais eficiente

Gabarito: letra A. A consulta deve combinar as tabelas ROTAS e BAIRROS com INNER JOIN para garantir que a rota parta do bairro de origem correto, filtrar pelo destino específico e ordenar pelos critérios de eficiência (distância e tempo). A alternativa A é a única que apresenta sintaxe SQL válida e lógica completa.

A questão testa o conhecimento de junção INNER JOIN com cláusula ON, filtragem com WHERE e ordenação com ORDER BY. É preciso ligar a chave estrangeira bairro_origem da tabela ROTAS à chave primária id_bairro da tabela BAIRROS para identificar o nome do bairro de origem.

Alternativa A — ✅ Correta ⟵ GABARITO

A sintaxe está correta: FROM ROTAS r INNER JOIN BAIRROS b ON r.bairro_origem = b.id_bairro faz a junção; WHERE b.nome = 'Bairro A' AND r.bairro_destino = 'Bairro B' filtra origem e destino; ORDER BY r.distancia ASC, r.tempo_estimado ASC ordena pela eficiência. Retorna exatamente as rotas entre os dois bairros específicos.

Alternativa B — ❌ Incorreta

A expressão SELECT INNER JOIN é inválida. O comando SELECT deve vir antes da lista de colunas, e a junção deve ser declarada após o FROM com a cláusula ON. Além disso, falta a condição de junção e o filtro de destino está presente, mas a sintaxe compromete a consulta.

Alternativa C — ❌ Incorreta

Falta o filtro para o bairro de destino (r.bairro_destino = 'Bairro B'). A consulta retornaria todas as rotas que partem do 'Bairro A' para qualquer destino, não apenas para o 'Bairro B'.

Alternativa D — ❌ Incorreta

A cláusula AND MIN(r.distancia) no WHERE é inválida — funções agregadas não podem ser usadas diretamente no WHERE sem uma subconsulta. Além disso, INNER JOIN ROTAS AND BAIRROS não segue a sintaxe SQL (falta ON e a junção está mal posicionada).

Alternativa E — ❌ Incorreta

GROUP BY r.id_rota agrupa por cada rota, e MIN(r.distancia) retorna a própria distância (já que cada rota tem um único valor). Falta o filtro de destino (Bairro B) e a ordenação por eficiência. O resultado não atende ao objetivo.

Gabarito: letra A

Link permanente: /questoes/fc073215