Pular para o conteúdo principal

Questão de Banco de Dados — Consultas e Comandos em SQL — CESPE / CEBRASPE 2024

Banco de DadosConsultas e Comandos em SQL
Código
ce403618
Banca
CESPE / CEBRASPE
Órgão
ANAC
Ano
2024
Cargo
ERAC ( )

Figura CB1A5

Imagem associada para resolução da questão

No que se refere a banco de dados, julgue o item a seguir, tendo o modelo apresentado na figura CB1A5 como referência.

 
IdOperadoraDeOperadora
1Operadora A
2Operadora B
 
IdReclamacaoDeReclamacaoIdOperadora
10CDC1
20CDC1
30CDC1
50ABC2
60ABC2

Considerando que as tabelas do modelo apresentado na figura CB1A5 possuam os registros precedentes, é correto afirmar que a execução do seguinte comando


SELECT o.Deoperadora, COUNT(r.idreclamacao)
AS Quantidade
FROM Reclamacoes r
INNER JOIN Operadora o ON o.idoperadora =
r.IdOperadora
GROUP BY o.Deoperadora


terá como resultado a tabela a seguir.

DeOperadora

Quantidade
Operadora A3
Operadora B2
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoC — Certo

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”.

SQL – INNER JOIN com GROUP BY e COUNT

Gabarito: Certo. A consulta apresentada realiza um INNER JOIN entre as tabelas Reclamacoes e Operadora pela chave IdOperadora, agrupa o resultado por DeOperadora e conta as reclamações de cada operadora. Como a tabela Reclamacoes possui 3 registros para a Operadora A (ids 10, 20 e 30) e 2 registros para a Operadora B (ids 50 e 60), o resultado é exatamente a tabela mostrada: Operadora A com quantidade 3 e Operadora B com quantidade 2.

O comando SQL em questão combina três conceitos fundamentais: a junção interna (INNER JOIN), a função de agregação COUNT e a cláusula GROUP BY. O INNER JOIN combina linhas de duas tabelas com base em uma condição de igualdade entre colunas — aqui, o.idoperadora = r.IdOperadora. Isso significa que apenas as reclamações que possuem uma operadora correspondente na tabela Operadora serão consideradas; como todas as reclamações têm IdOperadora 1 ou 2, e ambas as operadoras existem, nenhuma linha é descartada.

A função COUNT(r.idreclamacao) conta quantas reclamações existem para cada grupo. A cláusula GROUP BY o.Deoperadora agrupa as linhas resultantes do JOIN pelo nome da operadora, fazendo com que o COUNT seja calculado separadamente para cada operadora. O resultado é uma linha por operadora, com a contagem de reclamações associadas.

Vamos verificar os dados: a tabela Reclamacoes tem 5 registros — três com IdOperadora = 1 (ids 10, 20, 30) e dois com IdOperadora = 2 (ids 50, 60). A tabela Operadora mapeia IdOperadora 1 para "Operadora A" e IdOperadora 2 para "Operadora B". Portanto, o JOIN produz 5 linhas combinadas, que são agrupadas em dois grupos: "Operadora A" com 3 reclamações e "Operadora B" com 2 reclamações. O resultado bate exatamente com a tabela apresentada no enunciado.

A pegadinha que a banca poderia explorar aqui seria confundir INNER JOIN com LEFT JOIN (que incluiria operadoras sem reclamações, com contagem 0) ou esquecer o GROUP BY (o que retornaria apenas uma linha com o total geral). Mas o comando está correto e o resultado é o esperado.

  1. 1INNER JOIN (combina linhas)
  2. 2GROUP BY (agrupa por operadora)
  3. 3COUNT (conta por grupo)
LEVEL · soulevel.com.br

Item — ✅ CERTO

A afirmação está correta. O comando SQL executa o INNER JOIN entre Reclamacoes e Operadora, agrupa por DeOperadora e conta as reclamações. Com os dados fornecidos, o resultado é exatamente a tabela apresentada: Operadora A com 3 e Operadora B com 2.

PEGA ESSA DICA!

Para conferir consultas com JOIN e GROUP BY, siga estes passos: (1) identifique a condição do JOIN e verifique se todas as linhas têm correspondência; (2) determine os grupos formados pelo GROUP BY; (3) aplique a função de agregação a cada grupo. Aqui, o INNER JOIN não descarta nenhuma linha, pois todas as reclamações têm operadora válida.

Gabarito: Certo

Link permanente: /questoes/ce403618