Questão de Banco de Dados — SQL — CESPE / CEBRASPE 2024
- Código
- ce188239
- Banca
- CESPE / CEBRASPE
- Órgão
- TCE-AC
- Ano
- 2024
- Nível
- Superior
- Cargo
- Analista de Tecnologia da Informação - Área: Gestão de Dados

- CCerto
- EErrado

GabaritoC — Certo
Esta questão depende de uma figura que apresenta o projeto de banco de dados e a consulta SQL original, que não está disponível aqui. O raciocínio abaixo é o método de resolução — confira a estrutura das tabelas e a consulta na prova original.
Gabarito: Certo (C). A descrição do enunciado — criar uma view que lista o total de gastos por município e hospital, agrupa por essas colunas, calcula a soma e ordena de forma decrescente pelo maior gasto e depois pelo nome do município e do hospital — é exatamente o que uma consulta SQL com CREATE VIEW, GROUP BY, SUM e ORDER BY faz. A sintaxe descrita está correta e atende ao que se propõe.
Uma view (ou visão) é uma tabela virtual derivada de outras tabelas, definida por uma consulta SQL armazenada no banco de dados. Ela não armazena dados fisicamente (a menos que seja materializada); ao ser referenciada, a consulta que a define é executada, retornando os dados atuais das tabelas base. No contexto da questão, a view criada serve para consolidar gastos em saúde por município e hospital, facilitando análises e relatórios.
A consulta descrita segue a estrutura típica de agregação em SQL:
CREATE VIEW nome_da_view AS
SELECT municipio, hospital, SUM(valor_gasto) AS total_gasto
FROM tabela_de_gastos
GROUP BY municipio, hospital
ORDER BY total_gasto DESC, municipio, hospital;O GROUP BY agrupa as linhas que têm os mesmos valores nas colunas especificadas (município e hospital), e a função de agregação SUM calcula a soma dos valores de gasto para cada grupo. O ORDER BY ordena o resultado: primeiro pelo total de gasto em ordem decrescente (DESC), e, em caso de empate, pelo nome do município e depois pelo nome do hospital, ambos em ordem crescente (padrão).
A ordem de execução lógica das cláusulas em uma consulta SQL é: FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY. Isso significa que o ORDER BY é aplicado após a agregação, podendo referenciar os apelidos (aliases) definidos no SELECT, como total_gasto. Portanto, a ordenação descrita é válida.
A pegadinha que a banca poderia explorar é inverter a ordem de ordenação (por exemplo, ordenar pelo nome antes do gasto) ou usar HAVING em vez de WHERE para filtrar grupos, mas a descrição do enunciado está correta. Também é comum confundir GROUP BY com ORDER BY, mas aqui ambos são usados adequadamente.
Guarde a estrutura: CREATE VIEW + SELECT com agregação + GROUP BY + ORDER BY. É exatamente essa combinação que a questão descreve, e é o que você deve verificar na consulta original da prova.
A descrição está correta: a consulta cria uma view (CREATE VIEW), lista o total de gastos por município e hospital (colunas no SELECT), agrupa por essas colunas (GROUP BY), calcula a soma dos valores (SUM) e ordena de forma decrescente pelo maior gasto (ORDER BY ... DESC) e depois pelo nome do município e do hospital. A sintaxe e a semântica descritas são válidas em SQL padrão.
Esta alternativa afirma que a descrição está incorreta, mas ela está correta. Não há erro na descrição: a consulta faz exatamente o que o enunciado diz. Portanto, a alternativa E é falsa.
Gabarito: letra C
Link permanente: /questoes/ce188239