locked
Select com count RRS feed

  • Pergunta

  • Olá pessoal, 

    quero uma tabela que me gere o id unidade, a quantidade de pessoas cadastradas nesta unidade, o nivel qualitativo dele ( baixo, medio, alto, null) e a quantidade em cada uma. Ficando assim

    idunidade  qtde  valor     qtde_valor

    305             100   Baixo       50

    305             100  Médio        25

    305             100   Alto          25

    porem o retorno está assim:

    idunidade  qtde  valor     qtde_valor

    305            50     Baixo       50

    305             25    Médio       25

    305             25    Alto          25

    segue abaixo a sintaxe:

    select idunidade,count (idunidade), valor, COUNT (valor)
    from (
    select tr.idunidade,rs.valor
     from resultadoqualitativo rs
     inner join aluno al on al.idaluno = rs.identidade
     inner join turma tr on tr.idturma = al.idturma
    where rs.idindicadorqualitativo = 10 and rs.idtipoentidade = 1 and rs.idavaliacao = 32
    union all
    select pr.idunidade,rs.valor
     from resultadoqualitativo rs
     inner join professor pr on pr.idprofessor = rs.identidade
     where rs.idindicadorqualitativo = 10 and rs.idtipoentidade = 4 and rs.idavaliacao = 32)as A
     group by idunidade, valor
     order by idunidade

    Alguem pode me ajudar?

    terça-feira, 30 de julho de 2013 15:14

Respostas

Todas as Respostas

  • Guilherme,

    primeiramente, o CAM é de CLUBE ATLETICO MINEIRO? GALO!!! #rumoamarrocos

    Segundo, tentou usar um Group By na sua query e ao inves de usar o count, usa  um SUM para somar a qtde de pessoas.

    SELECT IDUNIDADE,
           SUM(QTDE),
           QTDE_VALOR 

    FROM [TABELA] 

    GROUP BY IDUNIDADE

    terça-feira, 30 de julho de 2013 16:10
  • mais ai ele soma o valor '305' e não a quantidade.

    Como faço?

    É sim CAM  de clube atlético mineiro.

    terça-feira, 30 de julho de 2013 16:51
  • Boa tarde,

    Experimente dessa forma:

    select 
        idunidade, 
        count(idunidade) over() as qtde, 
        valor, 
        COUNT(valor) as qtde_valor
    from (-- ...
    

    Espero que ajude.


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

    terça-feira, 30 de julho de 2013 18:02
  • Não deu certo.

    Tipo eu tenho vários idunidade :

    306,306,307,308...

    preciso que gere o valor total de cada.

    quarta-feira, 31 de julho de 2013 15:13
  • Neste caso experimente dessa forma:

    select 
        idunidade, 
        count(idunidade) over(partition by idunidade) as qtde, 
        valor, 
        COUNT(valor) as qtde_valor
    from (-- ...

    Espero que ajude.


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

    quarta-feira, 31 de julho de 2013 17:52
  • Não deu certo. 

    Acho que preciso explicar melhor,

    Tenho uma tabela resultadoqualitativo, em cada linha possuo o resultado por aluno e professor, nivelado por baixo, médio e alto. 

    Faço um join com as tabelas aluno, turma e professor para descobrir de qual unidade eles são.

    Preciso descobrir a quantidade total de alunos por unidade e do lado a quantidade é alto médio e baixo.

     

    quinta-feira, 1 de agosto de 2013 12:24
  • A alteração que sugeri não apresentou o resultado dessa forma? O que aconteceu? Como ficou o resultado?

    Talvez seja melhor você postar umas linhas de exemplo das tabelas envolvidas e o respectivo resultado esperado para que seja possível fazer alguns testes.


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

    quinta-feira, 1 de agosto de 2013 13:34
  • Ficou assim:

    idunidade   qtde   valor    qtde valor
    305               4       Baixo   51

    305               4       Médio   143

    305               4        Alto      119

    305               4       Null        10

    Se o você puder me passar login skype e-mail ... posso te mandar as colunas para pode me ajudar...

    Esta querry está contando sempre valor 4. Que a quantidade de vezes que ele repete.

    O real valor teria que ser a soma (51+143+119+10)

    quinta-feira, 1 de agosto de 2013 14:46
  • Experimente substituir o trecho abaixo

        count(idunidade) over(partition by idunidade) as qtde, 

    por

        sum(qtde_valor) over(partition by idunidade) as qtde, 

    Espero que ajude.


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

    quinta-feira, 1 de agosto de 2013 15:06
  • nem rodo a querry. 

    Deu invalid column name.

    Será pq declarou ela 2 linhas acima?

    sexta-feira, 2 de agosto de 2013 13:19
  • Consegui. Obrigado amigos
    sexta-feira, 2 de agosto de 2013 13:25