Pular para o conteúdo

Cebraspe · Polícia Federal 2025

Questão 120 — Banco de Dados: SQL — Consultas com JOIN, GROUP BY e HAVING

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

Ver gabarito

Gabarito: Errado

Fonte: Gabarito preliminar: Gabarito oficial definitivo — Cargo 5