none
SUM e COUNT RRS feed

  • Pergunta

  • Amigos, bom dia.


    Gostaria por favor, de uma ajuda para o caso abaixo:



    TB_Computador ((PK)ID, Hostname) valores(1,nome_computador)

    TB_Dispositivos((PK)ID, Descrição) valores(1, RAM)

    TB_Computador_Detalhe((PK)ID, ComputadorID, DispositivoID, valor)valores(1,1,1,1,1000)


    Cada computador pode ter mais de 1 pente de memória, preciso trazer em uma consulta , a distribuição de quantidade de memória no meu park

    Conteúdo de 
    ID | ComputadorID | DispositivoID | Valor
    ------------------------------------------
    1  |             1 |             1 |     1
    1  |             1 |             1 |     1
    2  |             3 |             1 |     2
    3  |             5 |             1 |     4


    Resultado:

    RAM   | Quantidade
    ------------------
    2     | 2
    4     | 1



    Ou seja, quantas máquinas possuem 2 gigas de RAM, quantas possuem 4 gigas, etc...

    Pensei em usar SUM e COUNT, mas não estou conseguindo visualizar a forma de criar a consulta.

    Alguma sugestão?

    terça-feira, 24 de fevereiro de 2015 13:34

Respostas

  • Bom dia,

    Experimente mais ou menos dessa forma:

    with CTE_Sum as
    (
        select
            c.ID, 
            sum(cd.Valor) as Valor
        from TB_Computador as c
        inner join TB_Computador_Detalhe as cd
            on cd.ComputadorID = c.ID
        inner join TB_Dispositivos as d
            on d.ID = cd.DispositivoID
        where
            d.Descricao = 'RAM'
        group by
            c.ID
    )
    
    select
        Valor as RAM,
        count(1) as Quantidade
    from CTE_Sum
    group by
        Valor

    Espero que ajude.


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

    terça-feira, 24 de fevereiro de 2015 13:49

Todas as Respostas

  • Bom dia,

    Experimente mais ou menos dessa forma:

    with CTE_Sum as
    (
        select
            c.ID, 
            sum(cd.Valor) as Valor
        from TB_Computador as c
        inner join TB_Computador_Detalhe as cd
            on cd.ComputadorID = c.ID
        inner join TB_Dispositivos as d
            on d.ID = cd.DispositivoID
        where
            d.Descricao = 'RAM'
        group by
            c.ID
    )
    
    select
        Valor as RAM,
        count(1) as Quantidade
    from CTE_Sum
    group by
        Valor

    Espero que ajude.


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

    terça-feira, 24 de fevereiro de 2015 13:49
  • Muito obrigado, abraço.
    terça-feira, 24 de fevereiro de 2015 14:03