none
Contar registros repetidos dentro duma tabela e exibir o subtotal RRS feed

  • Pergunta

  • Olá! Estou começando agora e tenho uma dúvida. Tenho uma tabela que é +ou- assim:

    Aluno                    Curso

    João                      Engenharia

    José                      Administração

    Paulo                     Medicina

    Pedro                    Administração

    Maria                     Medicina

    Minha dúvida: preciso criar uma view que exiba quantas vezes o curso se repete.

    Imagino que ficaria +ou- assim:

    Aluno                    Curso

    José                      Administração

    Pedro                    Administração

                                Subtotal: 2

    Maria                    Medicina

    Paulo                    Medicina

                                Subtotal: 2

    João                      Engenharia

                                 Subtotal: 1

    Obrigado a todos!

    terça-feira, 3 de março de 2015 20:19

Respostas

Todas as Respostas

  • Boa tarde,

    Experimente mais ou menos dessa forma:

    SELECT 
        Aluno,
        case when GROUPING_ID(Aluno, Curso) = 0
            then Curso
            else 'Subtotal: ' + CAST(COUNT(*) AS VARCHAR) 
        end as Curso
    FROM Tabela
    GROUP BY GROUPING SETS
        ( (Aluno, Curso), (Curso) )  

    Espero que ajude.


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

    terça-feira, 3 de março de 2015 21:17
  • Guilherme,

    Qual a sua versão do SQL Server?

    Se for 2008 ou 2008 R2 você pode utilizar o COMPUTE BY como no link abaixo:

    https://technet.microsoft.com/pt-br/library/ms181708(v=sql.105).aspx

    Caso você esteja utilizando 2012 ou superior pode tentar a consulta abaixo:

    SELECT Aluno, ISNULL(Curso,'TOTAL'), COUNT(*) AS TOTAL FROM TesteCompute 
    GROUP BY Curso, Aluno
    WITH ROLLUP
    Espero que o ajude.


    [MCP | MCSA Microsoft SQL Server 2012 | MCTS Microsoft Dynamics CRM 2011]

    quarta-feira, 4 de março de 2015 00:36
  • Marcos,

    A opção With Rollup esta presente no SQL Server desde a versão 2005!!!

    Não entendi o porque você sugeriu o uso no Rollup como uma opção somente para o 2012.


    Pedro Antonio Galvao Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quarta-feira, 4 de março de 2015 23:29
  • Junior,

    De fato a opção With Rollup existe desde a versão 2005, eu sugeri utilizar ela para o caso de o Guilherme estar utilizando 2012 em diante, pois a opção Compute By não funcionou na versão 2012 quando fiz testes, eu não deveria ter limitado apenas a versão 2012 ou superior.

    Obrigado por lembrar. :)


    [MCP | MCSA Microsoft SQL Server 2012 | MCTS Microsoft Dynamics CRM 2011]

    quinta-feira, 5 de março de 2015 13:07
  • Junior,

    De fato a opção With Rollup existe desde a versão 2005, eu sugeri utilizar ela para o caso de o Guilherme estar utilizando 2012 em diante, pois a opção Compute By não funcionou na versão 2012 quando fiz testes, eu não deveria ter limitado apenas a versão 2012 ou superior.

    Obrigado por lembrar. :)


    [MCP | MCSA Microsoft SQL Server 2012 | MCTS Microsoft Dynamics CRM 2011]

    Marcos,

    Sim perfeito, entendi, realmente o Compute By foi um dos recursos removidos no 2012.


    Pedro Antonio Galvao Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quinta-feira, 5 de março de 2015 14:33