Jump to content
MarcosAntonio

Select com limitação de soma de valores

Recommended Posts

boa tarde. 

Estou precisando de um Select que retorne uma soma que ao chegar a determinado valor ela reinicie e continue fazendo sucessivamente

 select
  pedido,
  volume,
  limite,
  SUM(volume) over (order by pedido ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) saldo 
 from pedidos
 group by pedido

o select está retornando assim porém quero que toda vez que chegue ou passe do limite resete o saldo, por exemplo parar no 100 que é o limite e começar um novo saldo

pedido       volume         limite     saldo
 1             70            100        70
 2             10            100        80
 3             20            100        100
 4             50            100        150
 5             30            100        180

 

preciso que ele soma o volume enquanto o saldo seja <= que o "limite", quando passar pare de somar e comece outra soma começando do 0, como no exemplo abaixo.

pedido        volume        limite     saldo
 1             70            100        70
 2             10            100        80
 3             20            100        100
 4             50            100        50
 5             30            100        80

 

Share this post


Link to post
Share on other sites
3 horas atrás, Motta disse:

Veja se o asktom o ajuda.

não me ajuda muito pois nesse exemplo ele usa a condição pela data, o meu tem que ser em cima da própria soma, no caso o saldo, preciso zerá-lo e reseta-lo após ele atingir o limite

Share this post


Link to post
Share on other sites

Eu já fiz "zerando" com um número fixo de linhas , o atuário que acumulasse os últimos 12 meses , assim no 13º expurgava do 1º e assim por diante.

Share this post


Link to post
Share on other sites
17 minutos atrás, Motta disse:

Eu já fiz "zerando" com um número fixo de linhas , o atuário que acumulasse os últimos 12 meses , assim no 13º expurgava do 1º e assim por diante.

E como ficou o select ?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By gamesmax2
      Boa noite,
      Pessoal estou com uma dificuldade no MYSQL, estou querendo obter dados de um cadastro caso ele tenha preenchido todos os Campos, tentei usar o Group by mas não tive sucesso.
       
      Minha tabela e a seguinte:
       
      Nome.              Pedido.            Status
      Daniel.              9955.                 Ok
      Daniel.              9954                  Ok
      Rafael.              9940                  Ok
      Rafael.              9941.                 Aberto
      Rafael.              9942.                 Ok
      Rodrigo.            9961.                 Ok
      Rodrigo.            9962.                 Ok
       
       
      Meu objetivo e puxar os nomes que estão com todos o pedidos relacionado em ok, no caso o Rafael não pode aparece pois ele tem um pedido Aberto, porém não conseguir fazer isso, pessoal peco a ajuda de VCS muito o obrigado.
       
      tentei isso aqui: SELECT nome, pedido, status FROM `cadastros` GROUP BY pedido, nome having status = 'Ok'
    • By gamesmax2
      Boa tarde,
      Pessoal estou com uma dificuldade no MYSQL, estou querendo obter dados de um cadastro caso ele tenha preenchido todos os Campos, tentei usar o Group by mas não tive sucesso.
       
      Minha tabela e a seguinte:
       
      Nome.              Pedido.            Status
      Daniel.              9955.                 Ok
      Daniel.              9954                  Ok
      Rafael.              9940                  Ok
      Rafael.              9941.                 Aberto
      Rafael.              9942.                 Ok
      Rodrigo.            9961.                 Ok
      Rodrigo.            9962.                 Ok
       
       
      Meu objetivo e puxar os nomes que estão com todos o pedidos relacionado em ok, no caso o Rafael não pode aparece pois ele tem um pedido Aberto, porém não conseguir fazer isso, pessoal peco a ajuda de VCS muito o obrigado.
       
      tentei isso aqui: SELECT nome, pedido, status FROM `cadastros` GROUP BY pedido, nome ORDER BY having status = 'Ok'  
       
    • By Thiago Btos
      Bom dia pessoal.
       
      Estou com uma dúvida na estruturação do select.
      Tenho um relatório que está extraindo já informações corretamente, com base no período gerado (inicial e final)
      Exemplo de como está hoje:
      SELECT D.CATEGORIA, SUM(D.VALOR) AS VALOR_VENDA, D.DATA AS (MES_ANO) FROM DUAL D WHERE D.DATA BETWEEN '20210501' AND '20210731' GROUP BY D.CATEGORIA, D.DATA Retornando:
      Categoria | Valor_venda     | Mes_Ano
      1                |     1000,00         | 05/2021
      1                |     2000,00         | 06/2021
      1                |       800,00         | 07/2021
      2                |      500,00          | 05/2021
      2                |      200,00          | 07/2021
      2                |      700,00          | 06/2021
       
      Até ai está tranquilo.
      Porém foi solicitado para adicionar uma coluna YTD (Year to data - acumulado do ano) agrupando o valor total da venda do ano do filtro.
      Então se foi colocado uma data do período Jan/2020 a Mar/2020, essa nova coluna tem que pegar as vendas do ano inteiro de 2020
       
      E precisa me retornar assim:
       
      Categoria | Valor_venda     | Mes_Ano  |  YTD
      1                |     1000,00         | 05/2021   |  15000,00
      1                |     2000,00         | 06/2021   |  15000,00
      1                |       800,00         | 07/2021   |  15000,00
      2                |      500,00          | 05/2021   |  8000,00
      2                |      200,00          | 07/2021   |  8000,00
      2                |      700,00          | 06/2021   |  8000,00
       
      (Os valores de 15000 e 8000 seria a soma do ano inteiro)
       
      O que consegui pensar seria um subselect que tem o where com data do ano, porém nesse caso retorno mais de um resultado no subselect, não dando para usar...
       
      Qual seria a alternativa que tenho?
       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.