Questão FC90520
A figura a seguir representa um projeto de banco de dados para a análise de gastos em saúde por município e por hospital. A partir dessas informações, julgue o próximo item. A segu
Linguagem SQL
CEBRASPE (CESPE) · 2024

A partir dessas informações, julgue o próximo item.
A seguinte consulta SQL lista os hospitais que não tiveram gastos com fisioterapia.
SELECT h.nome_hospital
FROM hospital h
WHERE EXISTS (
SELECT 1
FROM gastos g
WHERE g.id_hospital = h.id_hospital
AND g.id_tipo_gasto_saude = (SELECT
id_tipo_gasto_saude
FROM tipo_gasto_saude
WHERE nome_tipo_gasto = 'fisioterapia'))
Mostrar resposta e comentário
Gabarito
Errado
Comentário do professor
Comentário: A consulta tenta listar os hospitais que não tiveram gastos com fisioterapia, mas o problema está na cláusula WHERE EXISTS, que funciona da seguinte forma:
- A consulta principal (
FROM hospital h)- Seleciona todos os hospitais (
h.nome_hospital).
- Seleciona todos os hospitais (
- A subconsulta dentro de
EXISTS- Busca na tabela
gastos(g) se existe pelo menos um registro onde:- O
id_hospitaldegastoscorresponda aoid_hospitaldo hospital (h). - O
id_tipo_gasto_saudecorresponda ao tipo de gasto fisioterapia, identificado por uma subconsulta que recupera esse ID da tabelatipo_gasto_saude.
- O
- Busca na tabela
- O erro da lógica
EXISTSretornaTRUEse a subconsulta encontrar pelo menos um registro.- Isso significa que a consulta está filtrando os hospitais que tiveram pelo menos um gasto com fisioterapia.
- O enunciado pede os hospitais que não tiveram gastos com fisioterapia, mas a consulta faz o contrário.
A questão está errada porque a consulta apresentada retorna os hospitais que tiveram gastos com fisioterapia, e não os que não tiveram. O erro está no uso de
EXISTS, quando o correto seria NOT EXISTS.Conteúdo do catálogo FC Concursos · Atualizado em