Questão de Banco de Dados — Consultas e Comandos em SQL — CESPE / CEBRASPE 2024
Banco de Dados›Consultas e Comandos em SQL
Código
ce403667
Banca
CESPE / CEBRASPE
Órgão
TSE
Ano
2024
Cargo
AJ
idVenda
idCliente
dataVenda
valorVenda
1
101
10/09/2023
150.00
2
102
12/09/2023
250.00
3
101
15/09/2023
200.00
4
103
20/09/2023
200.00
5
102
25/09/2023
180.00
Com base na tabela de nome vendas apresentada acima e nos conceitos de SQL, DLL e DML, julgue o próximo item.
A execução do comando SQL a seguir apresentará a soma de todas as vendas cujo valor excede 150.00.
SELECT SUM(valorVenda) FROM vendas WHERE valorVenda > 150.00;
CCerto
EErrado
Revelar gabarito e comentário▾
GabaritoC — Certo
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”.
SQL – Função de agregação SUM com filtro WHERE
Gabarito: Certo. O comando SELECT SUM(valorVenda) FROM vendas WHERE valorVenda > 150.00; está sintaticamente correto e semanticamente adequado: a cláusula WHERE filtra as linhas cujo valor excede 150.00 e a função de agregação SUM soma apenas os valores dessas linhas filtradas. A lógica da consulta está correta.
A questão cobra o entendimento da ordem lógica de execução de uma consulta SQL e o papel da cláusula WHERE em conjunto com funções de agregação. Em SQL, a cláusula WHERE é aplicada antes da agregação: ela seleciona, linha a linha, quais registros da tabela participarão do cálculo. Somente depois desse filtro é que a função SUM é aplicada sobre o conjunto resultante. Isso é diferente da cláusula HAVING, que filtra depois da agregação, atuando sobre grupos ou sobre o resultado agregado.
Vamos aplicar isso aos dados da tabela vendas:
idVenda
idCliente
dataVenda
valorVenda
1
101
10/09/2023
150.00
2
102
12/09/2023
250.00
3
101
15/09/2023
200.00
4
103
20/09/2023
200.00
5
102
25/09/2023
180.00
O filtro WHERE valorVenda > 150.00 seleciona apenas as vendas com valor estritamente maior que 150.00. Isso exclui a venda de idVenda 1 (150.00), pois 150 não é maior que 150. As vendas selecionadas são:
idVenda 2: 250.00
idVenda 3: 200.00
idVenda 4: 200.00
idVenda 5: 180.00
A soma desses valores é: 250.00 + 200.00 + 200.00 + 180.00 = 830.00. Portanto, o comando retornará o valor 830.00, que é exatamente a soma de todas as vendas cujo valor excede 150.00. A afirmação do enunciado está correta.
A pegadinha clássica neste tipo de questão é o candidato confundir o operador > (maior que) com >= (maior ou igual a). Se o comando usasse >=, a venda de 150.00 entraria na soma. Mas o enunciado usa >, e o comando também, então a interpretação é consistente. Outra confusão possível é inverter o papel do WHERE e do HAVING, mas aqui não há GROUP BY, então o HAVING nem se aplica — o WHERE é a cláusula correta para filtrar linhas antes da agregação.
A função SUM é uma função de agregação que retorna a soma dos valores de uma coluna em um conjunto de linhas. Ela ignora valores nulos (NULL) por padrão. A sintaxe básica é SELECT SUM(coluna) FROM tabela WHERE condição;, exatamente como apresentado na questão. O comando está perfeitamente válido em qualquer SGBD relacional padrão (Oracle, MySQL, SQL Server, PostgreSQL etc.).
NÃO CAIA NESSA!
A banca explora a diferença entre > e >=. O comando usa > (estritamente maior), então a venda de exatamente 150.00 não entra na soma. Se o candidato ler com pressa e pensar que 150.00 entra, ele erraria o cálculo. Fique atento ao operador: > exclui o limite, >= inclui.
Item — ✅ CERTO
O comando SELECT SUM(valorVenda) FROM vendas WHERE valorVenda > 150.00; está correto. A cláusula WHERE filtra as linhas com valorVenda maior que 150.00 (excluindo a venda de 150.00), e a função SUM soma os valores dessas linhas: 250.00 + 200.00 + 200.00 + 180.00 = 830.00. A afirmação do enunciado descreve exatamente esse comportamento.