Questão de Banco de Dados — Consultas e Comandos em SQL — Quadrix 2025
- Código
- qa698953
- Banca
- Quadrix
- Órgão
- CRM MS
- Ano
- 2025
- Cargo
- Ana ( )
- CCerto
- EErrado
GabaritoE — Errado
Gabarito: ERRADO (letra E). O comando apresentado está incorreto porque utiliza o operador x para multiplicação, que não é válido em SQL — o operador correto é * (asterisco). Além disso, a lógica da subconsulta está correta: ela agrupa os atendimentos por médico e filtra com HAVING COUNT(id_atendimento) > 20, retornando os médicos com mais de 20 atendimentos. O erro fatal é a sintaxe da multiplicação, que torna o comando inválido.
O comando UPDATE é um comando da sublinguagem DML (Data Manipulation Language), responsável por modificar dados existentes em uma tabela. A estrutura básica é UPDATE nome_tabela SET coluna = valor WHERE condição. Neste caso, a intenção é aumentar o salário em 10% para médicos que realizaram mais de 20 atendimentos. A subconsulta correlacionada com GROUP BY e HAVING é uma técnica correta para identificar esses médicos, pois o GROUP BY agrupa os registros de atendimento por id_medico e o HAVING filtra os grupos que tenham contagem maior que 20. No entanto, a expressão salario x 1.10 está errada: em SQL, a multiplicação é feita com o operador *, não com a letra x. O comando correto seria SET salario = salario * 1.10.
Para entender melhor, vamos decompor o comando. A subconsulta SELECT id_medico FROM Atendimentos GROUP BY id_medico HAVING COUNT(id_atendimento) > 20 retorna uma lista de id_medico que têm mais de 20 atendimentos. O WHERE id_medico IN (...) filtra os médicos cujo id_medico está nessa lista. O UPDATE então altera o salário desses médicos. A lógica está correta, mas a sintaxe da multiplicação invalida o comando. Se o comando fosse UPDATE Medicos SET salario = salario * 1.10 WHERE id_medico IN (SELECT id_medico FROM Atendimentos GROUP BY id_medico HAVING COUNT(id_atendimento) > 20), ele estaria correto.
A banca explora aqui uma pegadinha clássica: o uso do operador x em vez de *. Muitos candidatos podem ler o comando e focar apenas na lógica da subconsulta, ignorando o detalhe da multiplicação. É essencial verificar a sintaxe completa do comando, especialmente os operadores aritméticos. Em SQL, os operadores aritméticos são + (adição), - (subtração), * (multiplicação) e / (divisão). O x não é um operador válido.
Além disso, é importante notar que a subconsulta usa COUNT(id_atendimento), que conta o número de atendimentos por médico. Isso está correto, pois cada registro em Atendimentos representa um atendimento. O GROUP BY id_medico agrupa os atendimentos por médico, e o HAVING filtra os grupos com mais de 20 atendimentos. A lógica está impecável; o único problema é o operador de multiplicação.
O comando está errado porque usa salario x 1.10 em vez de salario * 1.10. O operador x não é reconhecido pelo SQL como multiplicação. A subconsulta está correta, mas a expressão de atualização é inválida. Para corrigir, basta trocar x por *. Portanto, o item está errado.
Gabarito: ERRADO (letra E).
Link permanente: /questoes/qa698953