Com o objetivo de premiar seu melhor vendedor, uma loja con...

Próximas questões
Com base no mesmo assunto
Q1622516 Banco de Dados
Com o objetivo de premiar seu melhor vendedor, uma loja contratou José para desenvolver uma consulta SQL que retorne o ‘id_vendedor’ do vendedor que, somando o valor total de todos os seus pedidos, foi o que mais vendeu. Qual das alternativas a seguir apresenta o código que José deverá implementar para alcançar esse objetivo?
pedido id_pedido id_cliente id_vendedor total
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: C

A questão aborda o tema de agrupamento e subconsulta (subquery) no SQL, que são conceitos fundamentais para quem trabalha com bancos de dados relacionais. Para resolver essa questão, o aluno precisa entender como o comando GROUP BY é utilizado para agrupar linhas que possuem os mesmos valores em colunas específicas e como a função de agregação SUM() é utilizada para calcular a soma de um conjunto de valores. Além disso, é essencial conhecer o comando ORDER BY para ordenar os resultados e a cláusula LIMIT para restringir o número de linhas retornadas.

O objetivo da consulta é encontrar o id_vendedor cuja soma de vendas é a mais alta. A alternativa correta precisa agrupar as vendas por vendedor, calcular a soma total para cada um e então comparar essa soma para encontrar o maior valor.

Na alternativa C, o comando SQL faz exatamente isso:

SELECT id_vendedor, SUM(total) FROM pedido GROUP BY id_vendedor HAVING SUM(total) = (SELECT SUM(total) FROM pedido GROUP BY id_vendedor ORDER BY SUM(total) DESC LIMIT 0,1);

Explicação da consulta:

  • O GROUP BY id_vendedor agrupa todos os pedidos por vendedor.
  • O SUM(total) calcula a soma dos valores de todos os pedidos de cada vendedor.
  • A subconsulta, que está entre parênteses e começa com SELECT SUM(total)..., ordena os vendedores pelo total de vendas em ordem decrescente e utiliza o LIMIT 0,1 para retornar o valor mais alto.
  • O HAVING SUM(total) = (...) compara a soma dos totais de cada vendedor com a maior soma de total retornada pela subconsulta.

Isso significa que a consulta principal selecionará apenas o vendedor cuja soma das vendas corresponda à maior soma encontrada pela subconsulta. Dessa forma, o resultado final será o id_vendedor do vendedor com o maior valor total de vendas, que é exatamente o que a loja desejava para premiar seu melhor vendedor.

Clique para visualizar este gabarito

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

Comentários

Veja os comentários dos nossos alunos

GABARITO: LETRA C

DESC LIMIT 0,1

0 => índice inicial

2 => número de resultados pretendidos.

Fonte: https://www.devmedia.com.br/sql-limit/41216

A clausula LIMIT pode ser usada com OFFSET explícito: LIMIT <número de linhas> OFFSET <linhas a serem puladas>

Mas também de maneira implícita, onde a ordem que se passa os parametros é inversa, ou seja, primeiro as linhas a serem puladas, depois o número de linhas que se deseja:

LIMIT <linhas a serem puladas>,<número delinhas desejado>;

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo