Questão de Banco de Dados — Consultas e Comandos em SQL — CESPE / CEBRASPE 2024
Banco de Dados›Consultas e Comandos em SQL
Código
ce403618
Banca
CESPE / CEBRASPE
Órgão
ANAC
Ano
2024
Cargo
ERAC ( )
Figura CB1A5
No que se refere a banco de dados, julgue o item a seguir, tendo o modelo apresentado na figura CB1A5 como referência.
IdOperadora
DeOperadora
1
Operadora A
2
Operadora B
IdReclamacao
DeReclamacao
IdOperadora
10
CDC
1
20
CDC
1
30
CDC
1
50
ABC
2
60
ABC
2
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 A
3
Operadora B
2
CCerto
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.
1INNER JOIN (combina linhas)
2GROUP BY (agrupa por operadora)
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.