Questão nº 36
Questão de Banco de Dados · FCC TRT6 2025 (nº 36)
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.
```sql
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;
```
Este comando
- Acontará o número total de colaboradores e exibirá como se fosse de cada departamento, juntamente com o id, nome e 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 e número de colaboradores de cada departamento, incluindo aqueles sem colaboradores. (alternativa correta)
- Eexibirá o id, nome, local dos departamentos e o id dos colaboradores agrupando os colaboradores por departamento.
Resposta comentada
Gabarito Alternativa D
JOINs são comandos SQL que combinam linhas de duas ou mais tabelas com base em uma coluna relacionada. Um OUTER JOIN (como RIGHT OUTER JOIN) é um tipo especial de JOIN que inclui todas as linhas de uma das tabelas, mesmo que não haja correspondência na outra tabela. Especificamente, o RIGHT OUTER JOIN mantém todas as linhas da tabela que está à direita da palavra-chave JOIN, preenchendo com valores NULL para as colunas da tabela da esquerda onde não há correspondência. O GROUP BY agrupa linhas com valores idênticos em colunas especificadas, permitindo que funções de agregação como COUNT() operem sobre esses grupos.
- (A) Incorreta: O
GROUP BYgarante que a contagem seja feita por departamento, e não o número total de colaboradores. Não há erro na junção para causar esse comportamento. - (B) Incorreta: A instrução
RIGHT OUTER JOINjá é a correta para o objetivo de incluir todos os departamentos. Trocar paraLEFT OUTER JOINsem inverter as tabelas resultaria na exclusão de departamentos sem colaboradores. - (C) Incorreta:
RIGHT OUTER JOINé uma instrução SQL padrão e é plenamente suportada pelo Oracle. A afirmação de que não existe é falsa. - (D) Correta: O
RIGHT OUTER JOINgarante que todos os departamentos (tabeladepartamentosestá à direita) sejam listados. Para departamentos sem colaboradores,e.colaborador_idseráNULL, eCOUNT(e.colaborador_id)(que conta apenas valores não nulos) resultará em 0 para esses departamentos, atendendo à condição "incluindo aqueles sem colaboradores". - (E) Incorreta: A função
COUNT(e.colaborador_id)agrega os IDs dos colaboradores, ou seja, conta quantos colaboradores existem por grupo. Ela não exibe os IDs individuais dos colaboradores.
Fonte: FCC TRT6 2025 Analista Judiciário - Área Apoio Especializado - Especialidade Tecnologia da Informação (Caderno Tipo 005). Reproduzida para fins de estudo.