Questão 116 · Informática: Banco de dados
Texto associado à questão
(idInquerito, VALUES (1,111, 13); (idInquerito, VALUES(2,121, 12); (idInquerito, VALUES(3,131, 13); (idInquerito, VALUES (4,444, 11); (idInquerito, VALUES(5,555, 13); INSERT INTO EnvolvidoInquerito idInquerito) VALUES (10, 1); INSERT INTO EnvolvidoInquerito idInquerito) VALUES (20, 1); INSERT INTO EnvolvidoInquerito idInquerito) VALUES (20, 4); INSERT INTO EnvolvidoInquerito idInquerito) VALUES (30, 1); INSERT INTO EnvolvidoInquerito idInquerito) VALUES (30, 3); INSERT INTO EnvolvidoInquerito idInquerito) VALUES (30, 5); (idEnvolvido, (idEnvolvido, (idEnvolvido, (idEnvolvido, (idEnvolvido, (idEnvolvido, Considerando as informações precedentes, julgue os próximos itens, relativos à SQL.
conjunto = ((2,7), (4,9), (6,4), (4,6)) resultado = 0 x = 0 while x < len(conjunto): numeros = conjunto[x] y = numeros[1] if y == 4: pass else: resultado += y x += 1 print(f"O Resultado é: {resultado}")
Ao ser executado, esse código apresentará o seguinte resultado.
O Resultado é: 22 Ao ser executado, esse código apresentará o seguinte resultado.
O Resultado é: 2 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, VALUES (10, 'Gargamel'); INSERT INTO Envolvido (idEnvolvido, VALUES (20, 'Vingador'); INSERT INTO Envolvido (idEnvolvido, VALUES (30, 'Esqueleto'); Alcunha) Alcunha) Alcunha)
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 NumeroInquerito, idTipoInquerito)
INSERT INTO Inquerito NumeroInquerito, idTipoInquerito)
INSERT INTO Inquerito NumeroInquerito, idTipoInquerito)
INSERT INTO Inquerito NumeroInquerito, idTipoInquerito)
INSERT INTO Inquerito NumeroInquerito, idTipoInquerito)
Considere o comando SQL a seguir. SELECT TI.TipoInquerito, COUNT(I.idTipoInquerito) 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 INNER JOIN TipoInquerito AS TI ON I.idTipoInquerito = TI.idTipoInquerito GROUP BY TI.TipoInquerito; Ao ser executado, esse comando apresentará o resultado seguinte. TipoInquerito Inquérito Policial Inquérito Civil Notícia-Crime quantidade 1 1 3
Julgue o item:
Gabarito: ERRADO
Gabarito definitivo divulgado pela banca Cebraspe (PF 2025).
Comentário
Gabarito: ERRADO.
O comando SQL realiza uma série de junções (INNER JOIN) entre as tabelas Envolvido, EnvolvidoInquerito, Inquerito e TipoInquerito para, ao final, agrupar os resultados pelo tipo de inquérito (TI.TipoInquerito) e contar a quantidade de ocorrências (COUNT(I.idTipoInquerito)).
Vamos analisar as inserções de dados e as junções:
EnvolvidoInquerito: Esta tabela relacionaidEnvolvidocomidInquerito.idEnvolvido10 (Gargamel) está emidInquerito1.idEnvolvido20 (Vingador) está emidInquerito1 e 4.idEnvolvido30 (Esqueleto) está emidInquerito1, 3 e 5.
Inquerito: Esta tabela relacionaidInqueritocomidTipoInquerito.idInquerito1 ->idTipoInquerito13 (Notícia-Crime)idInquerito2 ->idTipoInquerito12 (Inquérito Civil)idInquerito3 ->idTipoInquerito13 (Notícia-Crime)idInquerito4 ->idTipoInquerito11 (Inquérito Policial)idInquerito5 ->idTipoInquerito13 (Notícia-Crime)
Ao juntar EnvolvidoInquerito com Inquerito e TipoInquerito, e depois agrupar por TipoInquerito, teremos as seguintes contagens:
- Inquérito Policial (idTipoInquerito 11): Associado ao
idInquerito4. OidInquerito4 está associado aoidEnvolvido20. Portanto, há 1 ocorrência. - Inquérito Civil (idTipoInquerito 12): Associado ao
idInquerito2. OidInquerito2 não está emEnvolvidoInquerito. Como é umINNER JOIN, ele não será incluído no resultado. Portanto, 0 ocorrências. - Notícia-Crime (idTipoInquerito 13): Associado aos
idInquerito1, 3 e 5.idInquerito1: Associado aidEnvolvido10, 20, 30 (3 ocorrências).idInquerito3: Associado aidEnvolvido30 (1 ocorrência).idInquerito5: Associado aidEnvolvido30 (1 ocorrência). Total para Notícia-Crime: 3 + 1 + 1 = 5 ocorrências.
O resultado correto seria:
| TipoInquerito | quantidade |
|---|---|
| Inquérito Policial | 1 |
| Notícia-Crime | 5 |
O resultado apresentado no item está incorreto, especialmente na contagem de 'Notícia-Crime' e na inclusão de 'Inquérito Civil' com contagem 1, quando deveria ser 0 ou não aparecer devido ao INNER JOIN.
Dica: Em questões de SQL com JOIN e GROUP BY, trace as relações e contagens passo a passo para evitar erros, especialmente com INNER JOIN que exclui linhas sem correspondência.
Fundamentos: Conceitos de SQL: INNER JOIN · Conceitos de SQL: GROUP BY · Conceitos de SQL: COUNT()
Comentário gerado pela Cravei IA a partir do enunciado e do gabarito definitivo divulgado pela banca, e conferido por uma verificação automática. A IA pode errar: o gabarito oficial sempre prevalece.
Fonte: prova Cebraspe PF 2025 (Estatístico), questão 116, com o gabarito definitivo da banca. Comentário: Equipe Cravei · como fazemos e revisamos.