none
Múltiplas consultas em uma única query RRS feed

  • Pergunta

  • Olá,

    Bom Dia

    Gostaria de compartilhar com vcs uma dúvida refente a multiplas consultas, no caso, preciso usar o resultado de uma consulta pra fazer outra.

    Tenho uma tabela com nome, pontuação e data, onde em um mesmo dia uma pessoa faz varias pontuações

    Ex:

          Nome       data            pontos

          JOAO       01/01/2015    1,5

          JOAO       01/01/2015    0,50

          MARIA      02/01/2015    1,32

    executando a consulta:   select nome, data, sum(pontos) from tbdados where data >= '01/01/2015' and data <= '31/01/2015' group by nome, data order by nome,data      eu consigo a lista da pontos que a pessoa fez por dia, porém o que eu preciso é da média mensal que cada pessoa fez, então eu preciso usar o resultado dessa consulta pra fazer outra (AVG), e depois disso preciso fazer a media de cada mes, ou seja, o resultado final precisa ser:

               Jan      Fev   Mar 

    JOAO    1,2      1,3   0,9

    MARIA  0,8      2,5    1,7

    Estou meio perdido pois vejo soluções como subquery, while, array mas estou me embananando na hora de colocar isso na minha situação. Alguém poderia me dar um empurrão?

    Obrigado.


    quarta-feira, 20 de janeiro de 2016 11:56

Respostas

  • Bom dia,

    Engatador, segue uma sugestão para teste:

    with CTE_Sum as
    (
        select
            Nome,
            Data,
            SUM(Pontos) as Pontos
        from TbDados
        where
            Data between '01/01/2015' and '31/03/2015'
        group by
            Nome,
            Data
    )
    
    select
        Nome,
        [Jan],
        [Fev],
        [Mar]
    
    from
    (
        select 
            Nome,
            LEFT(DATENAME(MONTH, Data), 3) as Mes,
            Pontos
        from CTE_Sum
    ) as t
    pivot
    (
        avg(Pontos) for Mes in ([Jan], [Fev], [Mar])
    ) as p

    Espero que ajude


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

    • Marcado como Resposta Marcos SJ quinta-feira, 21 de janeiro de 2016 11:08
    quarta-feira, 20 de janeiro de 2016 12:53

Todas as Respostas