Produtos mais vendidos
26/02/2006
0
Quando o cara faz uma venda, pronto, já vendeu. Mas quando é feito o pedido, esta espera dar por vendida. O problema é:
Tenho que fazer uma relação dos produtos que mais vendem. Como fazer essa?
Obridado.
Aspirante
Posts
26/02/2006
Aroldo Zanela
Pode usar uma consulta SQL com agrupamento. Exemplo:
Select Produto, Sum(Qtde) as Total from Vendas Group by Produto
Dependendo do seus banco de dados, pode ordenar e limitar a consulta (rows, limit, first, top, etc).
27/02/2006
Emerson Nascimento
Select Produto, Sum(Qtde) as Total from Vendas Group by Produto Order by 2 DESC
no caso eu ordenei pelo ´índice´ do campo (2o. campo da seleção), pois se trata de um campo agregado. conforme o banco de dados, essa sintaxe pode ser diferente.
dessa forma os produtos mais vendidos serão os primeiros registros, por conta da ordenação descrescente. a partir daí seria interessante limitar a consulta (rows, limit, first, top, etc, dependendo do banco de dados).
um exemplo com firebird: listar os 10 produtos mais vendidos:
Select First 10 Produto, Sum(Qtde) as Total from Vendas Group by Produto Order by 2 DESC
15/03/2006
Aspirante
Select First 10 CODIGO, DESCRICAO, Sum(QUANTIDADE) as TOTAL from HISTORICO Group by CODIGO, DESCRICAO Order by 2 DESC
mas não deu certo. quando o cara compra um produto ele pode especificar vários itens de um produto na QUANTIDADE. mas também, numa só compra ele pode comprar vários produtos e ir adicionando. assim, na tabela historico que é puxada depois pela tabela VENDAS para listar os produtos vendidos, fica várias vezes o mesmo produtos com quantidades diferentes.
como devo proceder? o código está certo para meu caso, ou devo pensar de outra maneira (que maneira?)? o que estou fazendo de errado?
obs.: já tentei de tudo, deixar o GROUP BY só com CODIGO E DESCRICAO, DESCRICAO E CODIGO, CODIGO DESCRICAO E TOTAL, TOTAL CODIGO DESCRICAO, etc... nada deu certo.
muito obrigado.
15/03/2006
Paullsoftware
não tem por que da errado o código usado (GROUP BY), já é para evitar duplicidade dos itens...
eu tive um problema semelhante e tive que improvisar, eu precisava mostrar os Filmes mais locados e tentei de várias formas fazer isso através de consultas SQL e não obtive resultados...
o código que usei foi esse:
CREATE VIEW TOP_LOCADOS( TITULO, LOCACOES) AS SELECT NOME_FILME as Titulo,COUNT(*) as LOCACOES FROM DETLOCACAO where detlocacao.codigo>0 GROUP BY NOME_FILME
depois pelo delphi fiz assim:
var I : Integer; begin i := 0; with DM_BANCO,TOP_LOCADOS do begin Close; Open; First; ListBox1.Items.Clear; for i := 0 to StrToInt(Edit1.Text) do begin ListBox1.Items.Add(FieldByName(´TITULO´).AsString + ´ - ´ +FieldByName(´LOCACOES´).AsString); Next; end; Close; end; end;
para melhor ajudarmos vc diga exatamente o que vc quer, e post as estruturas de suas tabelas dizendo quais campos você quer como resultado :wink:
15/03/2006
Emerson Nascimento
Select First 10 CODIGO, DESCRICAO, Sum(QUANTIDADE) as TOTAL from HISTORICO Group by CODIGO, DESCRICAO Order by 2 DESC
no seu caso, o ORDER BY é diferente. o índice do campo é 3.
Select First 10 CODIGO, DESCRICAO, Sum(QUANTIDADE) as TOTAL from HISTORICO Group by CODIGO, DESCRICAO Order by 3 DESC
15/03/2006
Gigatel
16/03/2006
Helio Nascimento
Sera que incorporando ao código a cláusula DISTINCT não resolveria a ´vinda´ de registros repetidos do mesmo código?
CODIGO, DESCRICAO, Sum(QUANTIDADE) as TOTAL
from
HISTORICO
Group by
CODIGO, DESCRICAO
Order by
3 DESC
17/03/2006
Aspirante
http://forum.devmedia.com.br/viewtopic.php?t=74873&highlight=&sid=832cefb0ba115e6d84979bb40c165b0c
sabendo disso, qual processo é melhor pra mim?
Clique aqui para fazer login e interagir na Comunidade :)
Inserção de url