Pular para o conteúdo principal

Questão de Banco de Dados — Consultas e Comandos em SQL — Quadrix 2025

Banco de DadosConsultas e Comandos em SQL
Código
qa698953
Banca
Quadrix
Órgão
CRM MS
Ano
2025
Cargo
Ana ( )
O Hospital Campo Grande está implementando um novo sistema de banco de dados para gerenciar informações sobre médicos, pacientes e atendimentos. O banco de dados apresenta as tabelas a seguir.   CREATE TABLE Medicos (        id_medico INT PRIMARY KEY,        nome VARCHAR(100),        especialidade VARCHAR(50),        salario DECIMAL(10,2) ); CREATE TABLE Pacientes (        id_paciente INT PRIMARY KEY,        nome VARCHAR(100),        data_nascimento DATE ); CREATE TABLE Atendimentos (        id_atendimento INT PRIMARY KEY,        id_medico INT,        id_paciente INT,       data_atendimento DATE,       descricao VARCHAR(100),       FOREIGN KEY (id_medico) REFERENCES Medicos(id_medico),       FOREIGN KEY (id_paciente) REFERENCES Pacientes(id_paciente) );   Com relação à situação hipotética apresentada e aos comandos SQL, julgue o item seguinte.   Para aumentar em 10% o salário de todos os médicos que realizaram mais de 20 atendimentos, o comando a ser utilizado é: UPDATE Medicos SET salario = salario x 1.10 WHERE id_medico IN (           SELECT id_medico FROM Atendimentos           GROUP BY id_medico           HAVING COUNT(id_atendimento) > 20 );
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoE — Errado

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Comandos SQL: UPDATE com subconsulta e agregação

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.

Item — ❌ ERRADO

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