Analista Judiciário - Área Apoio Especializado - Especialidade: Tecnologia da Informação
Considere que as tabelas, relacionamentos, atributos e restrições utilizadas no comando abaixo existem em um banco de dados Oracle aberto e em condições ideais.Este comando
Acontará o número total de colaboradores e exibirá como se fosse de cada departamento, juntamente com o id, nome = local do departamento, pois há um erro na junção.
Bexibirá o nome, local e número de colaboradores de cada departamento somente se a instrução RIGHT OUTER JOIN for trocada por LEFT OUTER JOIN.
Cestá incorreto, pois não existe a instrução RIGHT OUTER JOIN no Oracle, mas sim OUTER JOIN.
Dexibirá o id, nome, local enumero de colaboradores de cada departamento, incluindo aqueles sem colaboradores.
Eexibirá o id, nome, local dos departamentos e o id dos colaboradores agrupando os colaboradores por departamento.
Revelar gabarito e comentário▾
GabaritoD — exibirá o id, nome, local enumero de colaboradores de cada departamento, incluindo aqueles sem colaboradores.
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”.
Comando SQL: RIGHT OUTER JOIN com GROUP BY
Gabarito: letra D. O comando SELECT d.departamento_id, d.departamento_nome, d.local_id, COUNT(e.colaborador_id) FROM colaboradores e RIGHT OUTER JOIN departamentos d ON e.departamento_id = d.departamento_id GROUP BY d.departamento_id, d.departamento_nome, d.local_id; exibe todos os departamentos (incluindo os sem colaboradores) com seus respectivos id, nome, local e a contagem de colaboradores (0 quando não há correspondência). O RIGHT OUTER JOIN preserva a tabela da direita (departamentos), e a função COUNT() conta apenas as linhas não nulas da coluna da esquerda (e.colaborador_id), resultando em zero para departamentos sem empregados.
Critério
RIGHT OUTER JOIN (comando original)
LEFT OUTER JOIN (se trocado)
Tabela preservada (todos os registros)
departamentos (direita)
colaboradores (esquerda)
Resultado para departamentos sem colaboradores
Exibe o departamento com contagem 0
Não exibe o departamento (se não houver colaborador)
Sintaxe no Oracle
Válida e suportada
Válida e suportada
Efeito do COUNT(e.colaborador_id)
Conta apenas colaboradores existentes por departamento
Conta apenas colaboradores existentes por departamento
RIGHT OUTER JOIN: Tabela preservada (Direita (departamentos), Todos os registros); Tabela opcional (Esquerda (colaboradores), Sem correspondência = NULL); COUNT(coluna esquerda) (Conta não nulos, Sem correspondência = 0)
Alternativa A — ❌ Incorreta
Afirma que o comando contará o número total de colaboradores e exibirá como se fosse por departamento, com erro na junção. Na verdade, o COUNT(e.colaborador_id) é agrupado por departamento (GROUP BY), contando por departamento, não total geral. A junção (RIGHT OUTER JOIN) é sintática e semanticamente correta.
Alternativa B — ❌ Incorreta
Diz que o comando funcionará apenas se trocar RIGHT OUTER JOIN por LEFT OUTER JOIN. No Oracle, RIGHT OUTER JOIN é plenamente válido e produz o mesmo resultado que LEFT OUTER JOIN se as tabelas fossem invertidas. O comando já executa corretamente.
Alternativa C — ❌ Incorreta
Alega que RIGHT OUTER JOIN não existe no Oracle. Isso é falso: o Oracle suporta tanto RIGHT OUTER JOIN quanto LEFT OUTER JOIN e FULL OUTER JOIN.
Alternativa D — ✅ Correta ⟵ GABARITO
Descreve exatamente o comportamento: exibe id, nome, local e número de colaboradores de cada departamento, incluindo aqueles sem colaboradores. O COUNT(e.colaborador_id) retorna 0 para departamentos sem empregados, e o GROUP BY garante uma linha por departamento.
Alternativa E — ❌ Incorreta
Informa que exibirá o id dos colaboradores, mas o comando usa COUNT(e.colaborador_id), que retorna a contagem, não o id em si. A agregação COUNT não exibe valores individuais.
PEGA ESSA DICA!
Em junções externas (OUTER JOIN), a tabela que se deseja preservar (todos os seus registros) deve ficar no lado oposto ao tipo de JOIN: RIGHT preserva a da direita, LEFT preserva a da esquerda. Use COUNT(coluna_da_tabela_preservada) para contar correspondências, pois COUNT(*) contaria também linhas nulas geradas pela falta de correspondência.