Um sistema de gestão de vendas possui a relação Vendas com os atributos: venda_id; data_venda; cliente_id; e valor_total. O requisito funcional é gerar um relatório que liste o cliente_id e o total de vendas (valor_total) acumulado por cada cliente no ano de 2023. Qual das seguintes expressões de álgebra relacional NÃO atende a esse requisito?
- A)γ_cliente_id, SUM(valor_total) (σ_YEAR(data_venda)=2023 (Vendas))
Correta, porque primeiro filtra as vendas de 2023 e depois soma valor_total por cliente_id.
- B)σ_YEAR(data_venda)=2023 (γ_cliente_id, SUM(valor_total) (Vendas))
Errada, porque tenta filtrar por data_venda depois da agregação, quando o recorte temporal já não faz sentido na relação agrupada.
- C)γ_cliente_id, SUM(valor_total) (σ_data_venda BETWEEN '2023-01-01' AND '2023-12-31' (Vendas))
Correta, pois aplica o filtro de 2023 antes do agrupamento e então calcula o total por cliente.
- D)γ_cliente_id, SUM(valor_total) (σ_data_venda≥ '2023-01-01' ∧ data_venda≤ '2023-12-31' (Vendas))
Correta, porque usa uma condição equivalente de intervalo de datas para restringir 2023 antes de somar por cliente.
Gabarito: B
Em álgebra relacional, quando voce quer somar vendas de um recorte específico, o caminho normal é primeiro filtrar os registros do período e depois agrupar para calcular o total por cliente. Pense assim: primeiro voce separa as vendas de 2023, depois faz a conta. Se voce inverte essa ordem, o banco pode somar tudo antes e só depois tentar filtrar, o que bagunça o resultado. A expressão correta para esse tipo de relatório combina seleção (σ) e agregação/agrupamento (γ). A seleção limita os dados ao ano de 2023, e a agregação calcula SUM(valor_total) para cada cliente_id. Isso atende exatamente ao requisito: listar cliente_id e total acumulado por cliente no ano de 2023. O item B erra porque aplica a seleção YEAR(data_venda)=2023 depois da agregação. Depois de agrupar por cliente_id e somar valor_total, a relação resultante já não tem, em regra, a coluna data_venda como atributo individual. Ou seja, voce tenta filtrar por um campo que já foi “engolido” pela soma. É o tipo de ordem de operações que a banca adora cobrar. Em provas, lembre da regra prática: filtro antes de agrupar. É a mesma lógica de cozinhar feijão: você separa os grãos ruins antes de pôr na panela, não depois.