Pular para o conteúdo
  • Este tópico contém 12 respostas, 4 vozes e foi atualizado pela última vez 16 anos atrás por VINI85.
Visualizando 13 posts - 1 até 13 (de 13 do total)
  • Autor
    Posts
  • #92682
    VINI85
    Participante

      Boa tarde galera, tenho o seguinte cenário:

      Tabela Funcionários TFUNC
      Codigo
      Nome
      Salario
      Departamento
      =====================================
      Tabela Folha de Pagamento TFPAG
      Codigo do funcionario
      Nome
      Codigo do evento
      Valor
      Mes
      Ano
      =====================================

      Preciso montar uma consulta que me traga todos os funcionarios do departamento A e o total de salarios, todos os funcionarios do departamento B e o total de salarios.

      Preciso dessa quebra por departamento com o total.

      Abraços.

      #92683
      diegolenhardt
      Participante

        sum(salario) group by departamento

        #92684
        marcelomirandola
        Participante

          Vocë deve criar a consulta utlizando order by pelo depto e funcionario, e depois criar um relatorio com o somatorio (sum).
          Se fizer como a resposta do diego, ele agrupara por depto, mostrara a soma mas nao os fucionarios.

          #92685
          VINI85
          Participante

            [quote=”marcelomirandola”:7beirutx]Vocë deve criar a consulta utlizando order by pelo depto e funcionario, e depois criar um relatorio com o somatorio (sum).
            Se fizer como a resposta do diego, ele agrupara por depto, mostrara a soma mas nao os fucionarios.[/quote]

            Eu preciso que saia desta forma

            Nome Departamento Salario
            João A 1.000,00
            José A 500,00
            Maria A 350,00
            Total 1.850,00
            Ana B 2.000,00
            Ricardo B 1.000,00
            Total 3.000,00

            Preciso que na consulta saia assim.
            Como se fosse em uma planilha mesmo

            #92686
            diegolenhardt
            Participante

              cara, esse total voce tem que fazer na aplicacao…

              e a consulta simplesmente selecione nome, departamento, salario
              order by departamento

              é uma quebra normal, qualquer ferramenta de geração de relatorios tem essa funcao, ou tem que ser em PLSQL isso?

              #92687
              VINI85
              Participante

                [quote=”diegolenhardt”:2biuh2zx]cara, esse total voce tem que fazer na aplicacao…

                e a consulta simplesmente selecione nome, departamento, salario
                order by departamento

                é uma quebra normal, qualquer ferramenta de geração de relatorios tem essa funcao, ou tem que ser em PLSQL isso?[/quote]

                tem que ser na propria consulta.

                #92689
                burga
                Participante

                  Da pra fazer com rollup…


                  SELECT
                  f.nome,
                  f.departamento,
                  sum(f.salario)
                  FROM
                  tfunc f left outer join tfpag p on f.Codigo = p.Codigo do funcionario
                  GROUP BY
                  ROLLUP(f.departamento,f.nome);

                  ou algo assim…

                  Fiz o join das duas tabelas, mas se vc precisa só desses dados, não é necessário fazer o JOIN… só utilizar a tabela tfunc que me parece que tem todos os dados…

                  Qualquer dúvida, pesquise sobre o comando ROLLUP ou CUBE para Oracle no google que você encontra vários materiais…

                  #92753
                  VINI85
                  Participante

                    VALEU BURGA, VOU TESTAR E DEPOIS COMENTO AQUI.

                    Um forte abraço.

                    [quote=”burga”:2imxk1jc]Da pra fazer com rollup…


                    SELECT
                    f.nome,
                    f.departamento,
                    sum(f.salario)
                    FROM
                    tfunc f left outer join tfpag p on f.Codigo = p.Codigo do funcionario
                    GROUP BY
                    ROLLUP(f.departamento,f.nome);

                    ou algo assim…

                    Fiz o join das duas tabelas, mas se vc precisa só desses dados, não é necessário fazer o JOIN… só utilizar a tabela tfunc que me parece que tem todos os dados…

                    Qualquer dúvida, pesquise sobre o comando ROLLUP ou CUBE para Oracle no google que você encontra vários materiais…[/quote]

                    #92760
                    marcelomirandola
                    Participante

                      Cara, serviu até pra mim.
                      Não conhecia a cláusula rollup.
                      Com certeza vai resolver o problema do vini.

                      #92795
                      VINI85
                      Participante

                        [quote=”VINI85″:3d8m8flh]VALEU BURGA, VOU TESTAR E DEPOIS COMENTO AQUI.

                        Um forte abraço.

                        [quote=”burga”:3d8m8flh]Da pra fazer com rollup…


                        SELECT
                        f.nome,
                        f.departamento,
                        sum(f.salario)
                        FROM
                        tfunc f left outer join tfpag p on f.Codigo = p.Codigo do funcionario
                        GROUP BY
                        ROLLUP(f.departamento,f.nome);

                        ou algo assim…

                        Fiz o join das duas tabelas, mas se vc precisa só desses dados, não é necessário fazer o JOIN… só utilizar a tabela tfunc que me parece que tem todos os dados…

                        Qualquer dúvida, pesquise sobre o comando ROLLUP ou CUBE para Oracle no google que você encontra vários materiais…[/quote][/quote]

                        FUNCIONOU, FICOU SHOW CARA…
                        OBRIGADO…

                        #92796
                        VINI85
                        Participante

                          SÓ MAIS UMA DÚVIDA, SE EU ACRESCENTAR O CARGO DO FUNCIONÁRIO ELE COMEÇA A DUPLICAR O VALOR, COMO FAÇO POIS PRECISO INCLUIR NO GROUP BY O CARGO.

                          ABRAÇOS.

                          [quote=”VINI85″:3a2nn9fj][quote=”VINI85″:3a2nn9fj]VALEU BURGA, VOU TESTAR E DEPOIS COMENTO AQUI.

                          Um forte abraço.

                          [quote=”burga”:3a2nn9fj]Da pra fazer com rollup…


                          SELECT
                          f.nome,
                          f.departamento,
                          sum(f.salario)
                          FROM
                          tfunc f left outer join tfpag p on f.Codigo = p.Codigo do funcionario
                          GROUP BY
                          ROLLUP(f.departamento,f.nome);

                          ou algo assim…

                          Fiz o join das duas tabelas, mas se vc precisa só desses dados, não é necessário fazer o JOIN… só utilizar a tabela tfunc que me parece que tem todos os dados…

                          Qualquer dúvida, pesquise sobre o comando ROLLUP ou CUBE para Oracle no google que você encontra vários materiais…[/quote][/quote]

                          FUNCIONOU, FICOU SHOW CARA…
                          OBRIGADO…[/quote]

                          #92797
                          burga
                          Participante

                            Então, pelo funcionamento do rollup ele não vai duplicar…
                            O que ocorre é que ele vai mostrar, pro caso de 3 colunas no group by, a soma total e subtotal dos itens agrupados…

                            Se você agrupou 3 colunas: a, b, c (nesta mesma ordem)

                            O resultado vai mostrar o subtotal do agrupamento dos valores de abc
                            depois o subtotal do agrupamento dos valores de ab
                            e depois de a

                            Pela ordem que você colocar nas colunas do group by, sendo a primeira a mair importante, a segunda coluna a segunda mais importante e etc…

                            Veja sua resposta que deve estar dessa forma…

                            Depois, se não quiser apresentar algus dos subtotais, você pode colocar a sua consulta como uma subconsulta no FROM e filtrar pra trazer só que você desejar… Como os agrupamentos “abc” e “a” excluindo da resposta os “ab”…

                            Ficou um pouco confuso mas espero que entenda o que eu quis dizer…

                            #92852
                            VINI85
                            Participante

                              Cara fiquei mexendo, mexendo e encontrei a solução.

                              se eu quiser adicionar mais colunas e que o resultado não duplique é simples.só colocar um sub parenteses.

                              EXEMPLO:
                              GROUP BY
                              ROLLUP(f.departamento,(f.nome,f.FUNCAO));

                              Acho que aprendi um pouco.
                              Obrigado todo mundo aí.

                              [quote=”burga”:198pewy4]Então, pelo funcionamento do rollup ele não vai duplicar…
                              O que ocorre é que ele vai mostrar, pro caso de 3 colunas no group by, a soma total e subtotal dos itens agrupados…

                              Se você agrupou 3 colunas: a, b, c (nesta mesma ordem)

                              O resultado vai mostrar o subtotal do agrupamento dos valores de abc
                              depois o subtotal do agrupamento dos valores de ab
                              e depois de a

                              Pela ordem que você colocar nas colunas do group by, sendo a primeira a mair importante, a segunda coluna a segunda mais importante e etc…

                              Veja sua resposta que deve estar dessa forma…

                              Depois, se não quiser apresentar algus dos subtotais, você pode colocar a sua consulta como uma subconsulta no FROM e filtrar pra trazer só que você desejar… Como os agrupamentos “abc” e “a” excluindo da resposta os “ab”…

                              Ficou um pouco confuso mas espero que entenda o que eu quis dizer…[/quote]

                            Visualizando 13 posts - 1 até 13 (de 13 do total)
                            • Você deve fazer login para responder a este tópico.