Um banco de dados possui uma tabela “Venda” com os campos co...

Próximas questões
Com base no mesmo assunto
Q2007405 Banco de Dados
Um banco de dados possui uma tabela “Venda” com os campos codigo (inteiro), data_venda (data e hora) e cliente_id (inteiro). O campo cliente_id é uma chave estrangeira para uma outra tabela, de nome Cliente. Foi criada uma tabela Resumo_Vendas com os campos cliente_id (inteiro) e total (inteiro). Deseja-se, então, inserir a quantidade total de vendas realizadas até o momento para cada cliente. Nesse caso, qual comando SQL deverá ser executado? Considere um banco de dados PostgreSQL.
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: D

Vamos entender o que está sendo solicitado e por que a alternativa D é a resposta correta para a questão proposta.

Esta questão aborda o conceito de agregação de dados em um banco de dados SQL e, especificamente, o uso de subconsultas e comandos de inserção em massa no PostgreSQL. Para solucionar essa questão, precisamos entender como realizar operações de contagem de registros agrupados por uma chave (cliente_id) e como inserir esses resultados em outra tabela (Resumo_Vendas).

O comando INSERT INTO ... SELECT é um recurso poderoso do SQL que permite inserir um conjunto de resultados diretamente em uma tabela. O uso do GROUP BY é necessário para agrupar os resultados da contagem pelo cliente_id, garantindo que o total de vendas seja calculado separadamente para cada cliente.

O comando correto, que corresponde à alternativa D, é:

insert into Resumo_Vendas select client_id, count(codigo) from Vendas group by client_id;

Esse comando faz exatamente o que a questão pede: ele insere na tabela Resumo_Vendas a contagem de vendas (total de vendas) para cada cliente_id. A função COUNT(codigo) calcula a quantidade de vendas para cada cliente, e o GROUP BY client_id agrupa as vendas por cliente_id, que é a chave estrangeira referenciada na pergunta.

As outras alternativas são incorretas porque têm erros de sintaxe ou não realizam a inserção dos dados da maneira necessária:

  • A alternativa A afirma equivocadamente que a operação não é possível com um único comando SQL.
  • A alternativa B tenta combinar as cláusulas SELECT e INSERT de forma incorreta e sem a sintaxe correta do PostgreSQL.
  • A alternativa C tem uma estrutura que também é sintaticamente inválida, pois falta a cláusula FROM apropriada e a sintaxe correta para inserir os valores resultantes de um SELECT.

É importante destacar que o entendimento dos comandos SQL e a forma como eles podem ser combinados é essencial para trabalhar eficientemente com bancos de dados, especialmente em sistemas que precisam de manipulação de dados avançada, como a descrita no enunciado da questão.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo