FC ConcursosFC Concursos

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 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 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:

  1. A consulta principal (FROM hospital h)
    • Seleciona todos os hospitais (h.nome_hospital).
  2. A subconsulta dentro de EXISTS
    • Busca na tabela gastos (g) se existe pelo menos um registro onde:
      • O id_hospital de gastos corresponda ao id_hospital do hospital (h).
      • O id_tipo_gasto_saude corresponda ao tipo de gasto fisioterapia, identificado por uma subconsulta que recupera esse ID da tabela tipo_gasto_saude.
  3. O erro da lógica
    • EXISTS retorna TRUE se 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

Continue aprendendo