Exemplo de uma query que realiza uma soma e acumula os valores somados em outra coluna ao lado.
select equipe
,vendedor
,sum(valor) valor
,SUM(SUM(valor)) OVER (ORDER BY equipe,vendedor ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS acumulado
from vendas
group by equipe, vendedor
order by 1,2;
EQUIPE VENDEDOR VALOR ACUMULADO
1 1 Jose 16,49 16,49
2 1 Paulo 16,49 32,98
3 1 Pedro 25,79 58,77
4 1 Joao 62,33 121,1
5 1 Antonio 17,31 138,41
6 1 Felipe 8,01 146,42
7 1 Oscar 17,31 163,73
8 1 Lucio 42,65 206,38
9 1 Marcelo 51,65 258,03
Muito bom seu post . Me atendeu perfeitamente. Obrigado
ResponderExcluirValeu Eduardo, fico feliz por poder ajudar ! Abraços
ExcluirBom dia, no caso se eu tiver 2 valores para o vendedor José 1 , exemplo: vendas em medicamentos e Vendas em matriais hospitalares, como eu faria a query?
ResponderExcluirBom dia,
ExcluirNo exemplo acima, esta agrupando por equipe e vendedor, ou seja, eh a soma das vendas do Jose, pode ser que o valor de 16,49 do Jose esteja agrupando duas vendas de 8,24 por exemplo. Se vc tiver mais uma coluna, referente ao seu questionamento (ex: tipo de venda), basta vc inserir a coluna e alterar o agrupamento: ex:
select equipe
,vendedor
,tipo_de_venda
,sum(valor) valor
,SUM(SUM(valor)) OVER (ORDER BY equipe,vendedor, tipo_de_venda ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS acumulado
from vendas
group by equipe, vendedor, tipo_de_venda
order by 1,2;
Obs: Nao consegui testar pois nao tenho mais esse modelo de dados. Perdao se nao for nao tiver entendido sua duvida.
Suponhamos que a partir da linha 6, Felipe, Oscar, Lucio e Marcelo fossem da equipe = 2, teria como iniciar uma nova soma acumulada a partir da linha 6 ?
ResponderExcluirTem sim Edi !
ExcluirAntes da condicao original que esta na query acima, acrescenta essa aqui:
,SUM(SUM(valor)) OVER (PARTITION BY equipe ORDER BY equipe ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS acumulado_por_equipe
cara você é muito bom cara parabéns
ExcluirValeu Lucas, bondade sua ! Grande abraço !
ExcluirTem como colocar condição sobre o acumulado?
ResponderExcluirCreio que no acumulado nao pois ele eh somente uma soma da coluna "valor", linha a linha. O que vc pode fazer eh filtrar a coluna "valor", por exemplo, se vc quiser somar somente valores maiores que 50, vc coloca na clausula where "having sum(valor) > 50". Abracos
ExcluirOpa e como eu agrupo por exemplo, tendo o acumulado até tal valor .. e aí reseto acumulado?
ResponderExcluirMuito legal !!!! obrigado
ResponderExcluirManinho isso me ajudou muito esta de parabéns pelo Blog, já achei muitas dicas que me ajudaram.
ResponderExcluirSó que tenho uma dúvida e ja pesquisei bastante e até agora não consegui resolver, quem sabe vc pode me ajudar:
Quero fazer uma analise, tipo tenho dois meses de vendas de dois vendedores e quero ver o crescimento de cada um entre os meses, isso por vendedor quanto cada um cresceu no mês.
Tem alguma dica sobre esse assunto?
Desde já agradeço.
Marcio seu blog esta de parabéns mano, me ajudou muito em vários relatórios na empresa.
ResponderExcluirPorém tenho uma dúvida aqui que já é meio antiga, tenho feito varias pesquisas, mas não obtive o resultado que gostaria.
a dúvida é:
Quero fazer uma analise de crescimento, tipo tenho um vendedor, que vendeu X no mÊs 01 e o mesmo vendedor vendeu Y no mes 02, quero saber quanto ele cresceu nas vendas, e isso para um período maior.
Desde já agradeço.
Cara Parabéns!
ResponderExcluirestava desde as 12:00 quebrando a cabeça tentando utilizar o LEAD() E LAG() e não dava certo! Sua solução salvou minha sexta!!! Valew mesmo!
Valeu ! Feliz em ter ajudado ! Abraços
ResponderExcluirtop, me ajudou muito
ResponderExcluirobrigado!
Conteúdo prático e funcional ! Parabéns, me ajudou d+. Abraço
ResponderExcluirPerfeito, obrigado!
ResponderExcluir