Questão FC514904
A seguir, são apresentados um modelo de banco de dados, consistindo de quatro tabelas, bem como os comandos SQL utilizados para a criação e a inserção de dados nessas tabelas. cria
Linguagem SQL
CEBRASPE (CESPE) · 2025
A seguir, são apresentados um modelo de banco de dados, consistindo de quatro tabelas, bem como os comandos SQL utilizados para a criação e a inserção de dados nessas tabelas.

criação das tabelas
CREATE TABLE Envolvido ( idEnvolvido INT NOT NULL, Alcunha VARCHAR(45) NULL DEFAULT NULL, PRIMARY KEY (idEnvolvido));
CREATE TABLE TipoInquerito ( idTipoInquerito INT NOT NULL, TipoInquerito VARCHAR(45) NOT NULL, PRIMARY KEY (idTipoInquerito));
CREATE TABLE Inquerito ( idInquerito INT NOT NULL, NumeroInquerito INT NOT NULL, idTipoInquerito INT NOT NULL, PRIMARY KEY (idInquerito), FOREIGN KEY (idTipoInquerito) REFERENCES TipoInquerito (idTipoInquerito));
CREATE TABLE EnvolvidoInquerito ( idEnvolvido INT NOT NULL, idInquerito INT NOT NULL, PRIMARY KEY (idEnvolvido, idInquerito), FOREIGN KEY (idEnvolvido) REFERENCES Envolvido (idEnvolvido), FOREIGN KEY (idInquerito) REFERENCES Inquerito (idInquerito));
inserção de dados nas tabelas
INSERT INTO Envolvido (idEnvolvido, Alcunha) VALUES (10, 'Gargamel');
INSERT INTO Envolvido (idEnvolvido, Alcunha) VALUES (20, 'Vingador');
INSERT INTO Envolvido (idEnvolvido, Alcunha) VALUES (30, 'Esqueleto');
INSERT INTO TipoInquerito (idTipoInquerito, TipoInquerito) VALUES (11, 'Inquérito Policial');
INSERT INTO TipoInquerito (idTipoInquerito, TipoInquerito) VALUES (12, 'Inquérito Civil'); INSERT INTO TipoInquerito (idTipoInquerito, TipoInquerito) VALUES (13, 'Notícia-Crime');
INSERT INTO Inquerito (idInquerito, NumeroInquerito, idTipoInquerito) VALUES (1,111, 13); INSERT INTO Inquerito (idInquerito, NumeroInquerito, idTipoInquerito) VALUES(2,121, 12); INSERT INTO Inquerito (idInquerito, NumeroInquerito, idTipoInquerito) VALUES(3,131, 13); INSERT INTO Inquerito (idInquerito, NumeroInquerito, idTipoInquerito) VALUES (4,444, 11); INSERT INTO Inquerito (idInquerito, NumeroInquerito, idTipoInquerito) VALUES(5,555, 13);
INSERT INTO EnvolvidoInquerito (idEnvolvido, idInquerito) VALUES (10, 1); INSERT INTO EnvolvidoInquerito (idEnvolvido, idInquerito) VALUES (20, 1); INSERT INTO EnvolvidoInquerito (idEnvolvido, idInquerito) VALUES (20, 4); INSERT INTO EnvolvidoInquerito (idEnvolvido, idInquerito) VALUES (30, 1); INSERT INTO EnvolvidoInquerito (idEnvolvido, idInquerito) VALUES (30, 3); INSERT INTO EnvolvidoInquerito (idEnvolvido, idInquerito) VALUES (30, 5);
Considerando as informações precedentes, julgue o próximo item, relativos à SQL.
Considere o comando SQL que se segue.
SELECT DISTINCT E.Alcunha, COUNT(I.idInquerito) AS Quantidade FROM Envolvido AS E INNER JOIN EnvolvidoInquerito AS EI ON E.idEnvolvido = EI.idEnvolvido INNER JOIN Inquerito AS I ON EI.idInquerito = I.idInquerito GROUP BY E.Alcunha;
Esse comando, ao ser executado, apresentará o resultado a seguir.
Alcunha Quantidade Gargamel 1 Vingador 1 Esqueleto 1
Mostrar resposta e comentário
Gabarito
Errado
Comentário do professor
A afirmação está ERRADA porque a consulta agrupa por apelido e conta as linhas resultantes das junções, não retorna “1” para todos os envolvidos.
A sequência de junções (INNER JOIN) entre Envolvido → EnvolvidoInquerito → Inquerito gera uma linha para cada vínculo (cada par idEnvolvido,idInquerito). Em seguida o GROUP BY E.Alcunha agrupa essas linhas por apelido e a expressão COUNT(I.idInquerito) calcula quantas linhas há em cada grupo, ou seja \(Quantidade = COUNT(I.idInquerito)\).
Com os dados fornecidos há 1 vínculo para Gargamel (idEnvolvido=10), 2 para Vingador (idEnvolvido=20) e 3 para Esqueleto (idEnvolvido=30). O SELECT DISTINCT não altera esse resultado quando já há agrupamento. Logo, o resultado apresentado na questão (todos com 1) está incorreto.
Conteúdo do catálogo FC Concursos · Atualizado em