none
Média quando há dado RRS feed

  • Pergunta

  • Boa tarde!

    Estou precisando calcular a média de vários produtos porém a média só pode ser calculada pelos meses que tiveram vendas e não pelo total que seria 24

    select
    me.BARRA, me.DESCR_PROD, me.codprod, sum (me.QTD)/24 as media
            from CAIXAGERAL me
            where me.DATA BETWEEN CONVERT(datetime, '01/01/2012', 103) AND CONVERT(datetime, '31/12/2013', 103)
                  group by me.BARRA,me.DESCR_PROD, me.codprod


    • Editado Diegodcr quinta-feira, 5 de dezembro de 2013 17:54
    quinta-feira, 5 de dezembro de 2013 17:53

Respostas

Todas as Respostas

  • Boa tarde,

    Diego, experimente substituir a função Sum pela Avg:

    me.BARRA, me.DESCR_PROD, me.codprod, avg(me.QTD) as media

    Espero que ajude.


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

    quinta-feira, 5 de dezembro de 2013 18:08
  • Boa tarde,

    Diego, experimente substituir a função Sum pela Avg:

    me.BARRA, me.DESCR_PROD, me.codprod, avg(me.QTD) as media

    Espero que ajude.


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

    Não deu certo, na verdade nem sei que raio de média ele fez mas deu muito errado:

    select
    cx.BARRA, cx.DESCR_PROD,SUM(cx.qtd) as "QTD VEND",avg(cx.QTD) as MEDIA
            from CAIXAGERAL CX
            where cx.DATA BETWEEN CONVERT(datetime, '01/01/2012', 103) AND CONVERT(datetime, '31/12/2013', 103)
            and cx.BARRA='7506195129876'
                  group by CX.BARRA,cx.DESCR_PROD

    BARRA                                                  DESCR_PROD    QTD VEND    MEDIA
    7506195129876    [Promoção] ABS. ALWAYS PINK NO    10.000    1.000000
    7506195129876    ABS. ALWAYS PINK NOTURNO C/AB    54.000    1.018867

    quinta-feira, 5 de dezembro de 2013 18:23
  • Deleted
    quinta-feira, 5 de dezembro de 2013 18:23
  • Diego, verifique se o código abaixo retorna o que necessita.

    -- período de emissão do relatório
    declare @DataInicial datetime, @DataFinal datetime;
    set @DataInicial = convert(date, '1/1/2012', 103);
    set @DataFinal = convert(date, '31/12/2013', 103);
    
    -- ajusta data final
    set @DataFinal = DateAdd(day, +1, @DataFinal);
    
    --
    SELECT me.BARRA, me.DESCR_PROD, me.codprod, 
    (sum (me.QTD) / count(distinct convert(char(6), me.DATA, 112))) as media from CAIXAGERAL me where me.DATA >= @DataInicial and me.DATA < @DataFinal group by me.BARRA, me.DESCR_PROD, me.codprod;


        José Diz     Belo Horizonte, MG - Brasil
    (Se encontrou a solução nesta resposta, ou se o conteúdo foi útil, lembre-se de marcá-la)


    Excelente!! Funcionou e muito obrigado!
    quinta-feira, 5 de dezembro de 2013 19:04