Pular para o conteúdo principal

Questão de Banco de Dados — Consultas e Comandos em SQL — CESPE / CEBRASPE 2024

Banco de DadosConsultas e Comandos em SQL
Código
ce403667
Banca
CESPE / CEBRASPE
Órgão
TSE
Ano
2024
Cargo
AJ

idVenda

idClientedataVenda

valorVenda

110110/09/2023

150.00

210212/09/2023

250.00

310115/09/2023

200.00

410320/09/2023

200.00

510225/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;

  1. CCerto
  2. 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.

Gabarito: Certo

Link permanente: /questoes/ce403667