none
Calculo usando Dias de Datas RRS feed

  • Pergunta

  • Caros,

    Preciso fazer algo simples, mas não consegui resolver. Peço ajuda para realizar um calculo no qual eu uso "A quantidade de dias do mês como denominador" 

    Ex. 20 dias / 200 vendas = 10 vendas por dia

    SELECT A.cidade,
            A.pacote,
           SUM(A.[TOTAL_Vendas]/CAST(DAY(MAX(data)) AS INT)) AS PLANTA
    FROM base_clientes AS A
      WHERE a.Cidade ='SP'
      GROUP BY A.AT,A.PACOTE
    quarta-feira, 8 de fevereiro de 2017 14:15

Todas as Respostas

  • Seria a quantidade de dias igual a quantidade de dias com vendas em um único mês?

    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".

    Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".

    quarta-feira, 8 de fevereiro de 2017 14:20
  • Boa tarde, Rodrigo!

    Não entendi a dúvida. 20 dias em relação a que? Ao começo do mês ou ao total?

    Em todo caso a função DATEDIFF vai ser útil para você. Através dela você pode calcular a diferença entre datas, por exemplo:

    Create Table #Questao
    (
    	Codigo		Int
    	,DataVenda	DateTime
    )
    
    Insert Into #Questao
    Values
    (1, '20170101')
    ,(1, '20170107')
    ,(2, '20170201')
    ,(2, '20170208')
    
    Select Codigo, DateDiff(Day, Min(DataVenda), Max(DataVenda)) DiferencaDias
    From	#Questao
    Group By Codigo

    DATEDIFF

    https://msdn.microsoft.com/pt-br/library/ms189794.aspx

    Seria isso:

    SELECT A.cidade,
            A.pacote,
           SUM(A.[TOTAL_Vendas] / DateDiff(Day, Min(Data),MAX(data)) AS PLANTA
    FROM base_clientes AS A
      WHERE a.Cidade ='SP'
      GROUP BY A.AT,A.PACOTE
    


    quarta-feira, 8 de fevereiro de 2017 14:26
  • São 20 dias do mês corrente.
    quarta-feira, 8 de fevereiro de 2017 14:28
  • Boa tarde,

    Não sei se entendi corretamente mas experimente fazer uns testes mais ou menos dessa forma:

    SELECT 
        A.cidade,
        A.pacote,
        month(A.data) as mes,
        year(A.data) as ano,
        SUM(A.[TOTAL_Vendas]) / DAY(MAX(data) OVER()) AS PLANTA
    FROM base_clientes AS A
    WHERE 
        a.Cidade ='SP'
    GROUP BY 
        A.cidade,
        A.pacote,
        month(A.data),
        year(A.data)
    

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    quarta-feira, 8 de fevereiro de 2017 14:29
  • Isso, eu uso a max(day(data)) para pegar o máximo de dias que teve no mês, e gostaria de dividir a quantidade de vendas, para ter a media de vendas por dia. 
    quarta-feira, 8 de fevereiro de 2017 14:31
  • Deu certo Uffa, Obrigado Pessoal!
    quarta-feira, 8 de fevereiro de 2017 14:42
  • Fiz um exemplo que trata uma exceção  lançado pela divisão se na tabela tiver vendas em apenas um dia,

    DECLARE @TabelasVendas TABLE
        (
          idVenda INT IDENTITY(1, 1)
                      NOT NULL ,
          Data DATE NOT NULL ,
          Cidade VARCHAR(MAX) ,
          TotalVendas INT
        );
    
    
    
    
    INSERT  INTO @TabelasVendas
    VALUES  ( '2017-02-08', 'SP', 100 ),
            ( '2017-02-08', 'SP', 50 ),
            ( '2017-02-08', 'SP', 30 ),
            ( '2017-02-08', 'SP', 40 ),
            ( '2017-02-08', 'SP', 60 ),
            ( '2017-02-10', 'SP', 10 );
    SELECT  *
    FROM    @TabelasVendas AS TV;
            
    
    SELECT  TV.Cidade ,
            [Media Vendas] = ( SUM(TV.TotalVendas)
                               / IIF(DATEDIFF(DAY, MIN(TV.Data), MAX(TV.Data)) = 0, 1, DATEDIFF(DAY,
                                                                  MIN(TV.Data),
                                                                  MAX(TV.Data))))
    FROM    @TabelasVendas AS TV
    GROUP BY TV.Cidade;
    


    Wesley Neves

    quarta-feira, 8 de fevereiro de 2017 15:59