Ir para o conteúdo principal

O Hospital Campo Grande do Norte deseja gerenciar a participação de seus médicos em congressos médicos. Para isso, um banco de dados relacional foi projetado com as tabelas a seguir.

CREATE TABLE Medicos (
id_medico INT PRIMARY KEY,
nome VARCHAR(100) NOT NULL,
especialidade VARCHAR(50) NOT NULL
);

CREATE TABLE Congressos (
id_congresso INT PRIMARY KEY,
nome VARCHAR(100) NOT NULL,
local VARCHAR(100) NOT NULL,
data_inicio DATE NOT NULL,
data_fim DATE NOT NULL CHECK (data_fim >= data_inicio)
);

CREATE TABLE Participacoes (
id_medico INT,
id_congresso INT,
papel VARCHAR(50) CHECK (papel IN (‘Palestrante’, ‘Ouvinte’, ‘Organizador)),
data_inscricao TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id_medico, id_congresso),
FOREIGN KEY (id_medico) REFERENCES Medicos(id_medico) ON DELETE CASCADE,
FOREIGN KEY (id_congresso) REFERENCES Congressos(id_congresso) ON DELETE CASCADE
);

Além disso, para facilitar consultas, foi criada a seguinte view.

CREATE VIEW V_Medicos_Congressos AS
SELECT M.nome AS medico, C.nome AS congresso, C.local, P.papel
FROM Medicos M
JOIN Participacoes P ON M.id_medico = P.id_medico
JOIN Congressos C ON P.id_congresso = C.id_congresso;

Com base nessa situação hipotética, julgue o item a seguir.

O comando a seguir encontra todos os médicos que participaram de congressos em 2023, mas não participaram de nenhum congresso em 2024.

SELECT DISTINCT M.nome 
FROM Medicos M 
JOIN Participacoes P ON M.id_medico = P.id_medico 
JOIN Congressos C ON P.id_congresso = C.id_congresso 
WHERE EXTRACT(YEAR FROM C.data_inicio) = 2023 
AND M.id_medico NOT IN ( 
SELECT P2.id_medico 
FROM Participacoes P2 
JOIN Congressos C2 ON P2.id_congresso = C2.id_congresso 
WHERE EXTRACT(YEAR FROM C2.data_inicio) = 2024 
);

© Aprova Concursos - Al. Dr. Carlos de Carvalho, 1482 - Curitiba, PR - 0800 727 6282