Um banco de dados possui uma tabela “Venda” com os campos co...
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
eINSERT
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 umSELECT
.
É 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