Pular para o conteúdo

Provas

← Voltar para a lista de provas

Polícia Federal — Concurso 2025 (Edital nº 1 – PF – Administrativo) — Cargo 5: Estatístico — Prova Objetiva — Conhecimentos Específicos

Polícia Federal · Estatístico

Cebraspe2025

70 questões nesta prova · página 4 de 4 · 66 com gabarito

Programação Python — Estruturas de Controle e Coleções

Cebraspe 2025

Polícia Federal · Estatístico

Gabarito disponível

Julgue os próximos itens, a respeito de Python.

Considere o código a seguir, desenvolvido em Python.

lista = [1, 2, 3, 4]
resultado = 1
for x in lista:
if x % 2 == 0:
resultado *= x
print(f"O Resultado é: {resultado}")

Ao ser executado, esse código apresentará o seguinte resultado.

O Resultado é: 8
Selecione uma alternativa

Resolução comentada

Multiplica os números pares da lista: 2 × 4 = 8.

O resultado começa em 1 e é multiplicado apenas pelos pares, 2 e 4. Assim, 1 × 2 × 4 = 8.

Análise das alternativas

Certo: o resultado é 8. Errado: estaria incorreta, pois o valor impresso é 8.

Referência: Python: for, operador % e *=.

Resolução comentada do VaiConcursos.

Programação Python — Estruturas de Controle e Coleções

Cebraspe 2025

Polícia Federal · Estatístico

Gabarito disponível

Julgue os próximos itens, a respeito de Python.

Considere o código a seguir, desenvolvido em Python.

def calculo(lista):
for n in lista:
for x in range(2, n):
if n % x == 0:
n=n//x
break
else:
print(f"O Resultado é: {n}")
lista = [2, 4, 6]
calculo(lista)

Ao ser executado, esse código apresentará o seguinte resultado.

O Resultado é: 2
Selecione uma alternativa

Resolução comentada

O else do for só executa sem break, o que só ocorre com n=2, e imprime 2.

Para n=2, range(2,2) é vazio, então não há break e o else imprime 2. Para n=4 e n=6, o primeiro x (2) divide n e o break pula o else, sem impressão. A saída é apenas 'O Resultado é: 2'.

Análise das alternativas

Certo: a única saída é o valor 2. Errado: estaria incorreta, pois a saída realmente é 2.

Referência: Python: for...else, break e range.

Resolução comentada do VaiConcursos.

Programação Python — Estruturas de Controle e Coleções

Cebraspe 2025

Polícia Federal · Estatístico

Gabarito disponível

Julgue os próximos itens, a respeito de Python.

Considere o código a seguir, desenvolvido em Python.

prisao = {
"p1": {"inquerito": "INQ123",
"anos_prisao": 5},
"p2": {"inquerito": "INQ567",
"anos_prisao": 3},
"p3": {"inquerito": "INQ789",
"anos_prisao": 6}
}
del prisao["p1"]
for pessoa, dados in prisao.items():
dados["anos_prisao"] += 2
resultado = sum(dados["anos_prisao"] for
dados in prisao.values())
print(f"O Resultado é: {resultado}")

Ao ser executado, esse código apresentará o seguinte resultado.

O Resultado é: 13
Selecione uma alternativa

Resolução comentada

Remove p1, soma 2 aos anos de p2 e p3 e totaliza 13.

Após o del restam p2 (3 anos) e p3 (6 anos). O laço soma 2 a cada um, resultando em 5 e 8. A soma é 13.

Análise das alternativas

Certo: o resultado é 13. Errado: estaria incorreta, pois o valor impresso é 13.

Referência: Python: dicionários aninhados, del, items(), values() e sum().

Resolução comentada do VaiConcursos.

Programação Python — Estruturas de Controle e Coleções

Cebraspe 2025

Polícia Federal · Estatístico

Gabarito disponível

Julgue os próximos itens, a respeito de Python.

Considere o código a seguir, desenvolvido em Python.

conjunto = ((2,3), (4,5), (6,7))
x = 0
while x < len(conjunto):
numeros = conjunto[x]
resultado = (numeros[0] + numeros[1]) // 2
x += 1
print(f"O Resultado é: {resultado}")

Ao ser executado, esse código apresentará o seguinte resultado.

O Resultado é: 6
Selecione uma alternativa

Resolução comentada

Só a última iteração importa: (6+7)//2 = 6.

A variável resultado é sobrescrita a cada iteração. Na última, numeros = (6,7) e (6+7)//2 = 13//2 = 6 (divisão inteira). O print, fora do laço, exibe 6.

Análise das alternativas

Certo: o valor impresso é 6. Errado: estaria incorreta, pois o resultado final é 6.

Referência: Python: operador // (divisão inteira) e laço while.

Resolução comentada do VaiConcursos.

Programação Python — Estruturas de Controle e Coleções

Cebraspe 2025

Polícia Federal · Estatístico

Gabarito disponível

Julgue os próximos itens, a respeito de Python.

Considere o código a seguir, desenvolvido em Python.

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
Selecione uma alternativa

Resolução comentada

O laço soma o segundo elemento de cada tupla, exceto quando ele vale 4, e o total é 22.

Os valores de y são 7, 9, 4 e 6. O 4 cai no pass e é ignorado. A soma é 7 + 9 + 6 = 22, o que coincide com o resultado informado.

Análise das alternativas

Certo: o cálculo confirma 22. Errado: estaria incorreta, pois o resultado impresso é de fato 22.

Referência: Python: while, tuplas, indexação e if/else.

Resolução comentada do VaiConcursos.

Banco de Dados SQL — Consultas com JOIN, GROUP BY e HAVING

Cebraspe 2025

Polícia Federal · Estatístico

Gabarito disponível

Texto-base:
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.

Diagrama entidade-relacionamento com quatro tabelas. TipoInquerito: idTipoInquerito INT (NN, AI) e TipoInquerito VARCHAR(45) (NN). Envolvido: idEnvolvido INT (NN, AI) e Alcunha VARCHAR(45). Inquerito: idInquerito INT (NN, AI), NumeroInquerito INT (NN) e idTipoInquerito INT (FK, NN). EnvolvidoInquerito: idEnvolvido INT (FK, NN) e idInquerito INT (FK, NN). TipoInquerito relaciona-se com Inquerito em um para muitos; Envolvido relaciona-se com EnvolvidoInquerito em um para muitos; Inquerito relaciona-se com EnvolvidoInquerito em um para muitos.

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 os próximos itens, relativos à SQL.

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 quantidade
Inquérito Policial 1
Inquérito Civil 1
Notícia-Crime 3
Selecione uma alternativa

Banco de Dados SQL — Consultas com JOIN, GROUP BY e HAVING

Cebraspe 2025

Polícia Federal · Estatístico

Gabarito disponível

Texto-base:
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.

Diagrama entidade-relacionamento com quatro tabelas. TipoInquerito: idTipoInquerito INT (NN, AI) e TipoInquerito VARCHAR(45) (NN). Envolvido: idEnvolvido INT (NN, AI) e Alcunha VARCHAR(45). Inquerito: idInquerito INT (NN, AI), NumeroInquerito INT (NN) e idTipoInquerito INT (FK, NN). EnvolvidoInquerito: idEnvolvido INT (FK, NN) e idInquerito INT (FK, NN). TipoInquerito relaciona-se com Inquerito em um para muitos; Envolvido relaciona-se com EnvolvidoInquerito em um para muitos; Inquerito relaciona-se com EnvolvidoInquerito em um para muitos.

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 os próximos itens, 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
Selecione uma alternativa

Banco de Dados SQL — Consultas com JOIN, GROUP BY e HAVING

Cebraspe 2025

Polícia Federal · Estatístico

Gabarito disponível

Texto-base:
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.

Diagrama entidade-relacionamento com quatro tabelas. TipoInquerito: idTipoInquerito INT (NN, AI) e TipoInquerito VARCHAR(45) (NN). Envolvido: idEnvolvido INT (NN, AI) e Alcunha VARCHAR(45). Inquerito: idInquerito INT (NN, AI), NumeroInquerito INT (NN) e idTipoInquerito INT (FK, NN). EnvolvidoInquerito: idEnvolvido INT (FK, NN) e idInquerito INT (FK, NN). TipoInquerito relaciona-se com Inquerito em um para muitos; Envolvido relaciona-se com EnvolvidoInquerito em um para muitos; Inquerito relaciona-se com EnvolvidoInquerito em um para muitos.

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 os próximos itens, relativos à SQL.

Considere o comando SQL a seguir.

SELECT DISTINCT I.NumeroInquerito
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 I.NumeroInquerito
HAVING COUNT(I.idInquerito) > 1;

Ao ser executado, esse comando apresentará o resultado seguinte.

NumeroInquerito
111
Selecione uma alternativa

Banco de Dados SQL — Consultas com JOIN, GROUP BY e HAVING

Cebraspe 2025

Polícia Federal · Estatístico

Gabarito disponível

Texto-base:
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.

Diagrama entidade-relacionamento com quatro tabelas. TipoInquerito: idTipoInquerito INT (NN, AI) e TipoInquerito VARCHAR(45) (NN). Envolvido: idEnvolvido INT (NN, AI) e Alcunha VARCHAR(45). Inquerito: idInquerito INT (NN, AI), NumeroInquerito INT (NN) e idTipoInquerito INT (FK, NN). EnvolvidoInquerito: idEnvolvido INT (FK, NN) e idInquerito INT (FK, NN). TipoInquerito relaciona-se com Inquerito em um para muitos; Envolvido relaciona-se com EnvolvidoInquerito em um para muitos; Inquerito relaciona-se com EnvolvidoInquerito em um para muitos.

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 os próximos itens, relativos à SQL.

Considere o comando SQL que se segue.

SELECT DISTINCT COUNT(E.Alcunha) as
Quantidade
FROM Envolvido AS E
INNER JOIN EnvolvidoInquerito AS EI ON
E.idEnvolvido = EI.idEnvolvido
WHERE ALCUNHA LIKE '%E%';

Ao ser executado, esse comando apresentará o resultado a seguir.

Quantidade
1
Selecione uma alternativa

Banco de Dados SQL — Consultas com JOIN, GROUP BY e HAVING

Cebraspe 2025

Polícia Federal · Estatístico

Gabarito disponível

Texto-base:
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.

Diagrama entidade-relacionamento com quatro tabelas. TipoInquerito: idTipoInquerito INT (NN, AI) e TipoInquerito VARCHAR(45) (NN). Envolvido: idEnvolvido INT (NN, AI) e Alcunha VARCHAR(45). Inquerito: idInquerito INT (NN, AI), NumeroInquerito INT (NN) e idTipoInquerito INT (FK, NN). EnvolvidoInquerito: idEnvolvido INT (FK, NN) e idInquerito INT (FK, NN). TipoInquerito relaciona-se com Inquerito em um para muitos; Envolvido relaciona-se com EnvolvidoInquerito em um para muitos; Inquerito relaciona-se com EnvolvidoInquerito em um para muitos.

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 os próximos itens, relativos à SQL.

Considere o comando SQL a seguir.

SELECT DISTINCT EI.idEnvolvido,
I.idTipoInquerito
FROM Envolvido AS E
INNER JOIN EnvolvidoInquerito AS EI ON
E.idEnvolvido = EI.idEnvolvido
INNER JOIN Inquerito AS I ON EI.idInquerito =
I.idInquerito
WHERE NumeroInquerito = 111;

Ao ser executado, esse comando apresentará o resultado seguinte.

idEnvolvido idTipoInquerito
30 13
Selecione uma alternativa