Questão de Banco de Dados — SQL Server — FUNDATEC 2023
Banco de Dados›SQL Server
Código
qq890554
Banca
FUNDATEC
Órgão
CIGA-SC
Ano
2023
Nível
Médio
Cargo
Proramador
Observe a consulta abaixo:select sum(c) from base where a=1 and b>1;Qual comando deve ser executado para que o resultado da consulta acima seja igual a 7?
Ainsert into base (a,b,c) values (3,2,1);
Binsert into base (a,b,c) values (1,2,3);
Cupdate base set a=1 where c>=2;
Dupdate base set b=2 where c=2;
Edelete from base where c=2;
Revelar gabarito e comentário▾
GabaritoD — update base set b=2 where c=2;
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”.
Banco de Dados: Comandos DML e Agregação
Gabarito: letra D. A consulta select sum(c) from base where a=1 and b>1 atualmente retorna 5 (linhas (1,2,2) e (1,2,3)). Para que o resultado seja 7, é necessário que a soma de c seja incrementada em 2. O comando que produz esse efeito é o update base set b=2 where c=2 (alternativa D), pois altera a linha (1,1,2) para (1,2,2), adicionando seu c (2) ao conjunto filtrado, resultando em 2+2+3=7.
1Soma atual5
2Linha (1,1,2) vira (1,2,2)+2
3Nova soma7
LEVEL · soulevel.com.br
Análise das alternativas:
Primeiro, identifiquemos as linhas iniciais da tabela base:
a
b
c
1
1
2
1
2
2
1
2
3
2
2
2
5
2
5
A consulta original seleciona linhas com a=1 e b>1, ou seja, as duas linhas (1,2,2) e (1,2,3). A soma de c é 5. Queremos que a soma se torne 7.
Alternativa A — ❌ Incorreta
insert into base (a,b,c) values (3,2,1); insere uma linha com a=3, que não atende à condição a=1, portanto não altera o resultado da soma (continua 5).
Alternativa B — ❌ Incorreta
insert into base (a,b,c) values (1,2,3); insere mais uma linha (1,2,3). Essa linha é incluída no filtro, adicionando c=3 à soma, que passa a 5+3=8. Não atinge 7.
Alternativa C — ❌ Incorreta
update base set a=1 where c>=2; altera todas as linhas com c≥2 para a=1. Após o comando, as linhas (2,2,2) e (5,2,5) também passam a ter a=1. Ao aplicar o filtro a=1 e b>1, as linhas incluídas são (1,2,2), (1,2,3), (2,2,2) e (5,2,5). A soma de c é 2+3+2+5=12, muito acima de 7.
Alternativa D — ✅ Correta ⟵ GABARITO
update base set b=2 where c=2; altera todas as linhas com c=2 para b=2. As linhas afetadas são (1,1,2), (1,2,2) e (2,2,2). A linha (1,1,2) passa a ser (1,2,2). Agora, as linhas com a=1 e b>1 são:
(1,2,2) – original e a que foi alterada (são duas linhas, pois duas tinham (1,2,2) após a repetição? Na verdade, após o update, a tabela fica:
(1,2,2) – a linha que era (1,1,2) agora é (1,2,2)
(1,2,2) – a linha original (1,2,2) permanece
(1,2,3)
(2,2,2)
(5,2,5)
Assim, há duas linhas (1,2,2) e uma (1,2,3). A soma de c é 2+2+3=7.
Alternativa E — ❌ Incorreta
delete from base where c=2; remove todas as linhas com c=2: (1,1,2), (1,2,2) e (2,2,2). Restam apenas (1,2,3) e (5,2,5). A consulta retorna apenas c=3, soma = 3.
NÃO CAIA NESSA!
A banca testa a capacidade de prever o efeito de comandos DML em uma consulta agregada. É comum o candidato escolher a inserção de (1,2,3) (alternativa B), que resulta em soma 8, e não 7. O raciocínio correto exige notar que a linha (1,1,2) está fora do filtro por causa do b=1, e alterar seu b para 2 a inclui, adicionando exatamente 2 à soma.