- Este tópico contém 12 respostas, 4 vozes e foi atualizado pela última vez 16 anos atrás por
VINI85.
-
AutorPosts
-
18 de fevereiro de 2010 às 8:08 pm #92682
VINI85
ParticipanteBoa 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.
18 de fevereiro de 2010 às 8:11 pm #92683diegolenhardt
Participantesum(salario) group by departamento
18 de fevereiro de 2010 às 10:04 pm #92684marcelomirandola
ParticipanteVocë 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.18 de fevereiro de 2010 às 10:40 pm #92685VINI85
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,00Preciso que na consulta saia assim.
Como se fosse em uma planilha mesmo18 de fevereiro de 2010 às 10:47 pm #92686diegolenhardt
Participantecara, 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?
18 de fevereiro de 2010 às 11:06 pm #92687VINI85
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.
19 de fevereiro de 2010 às 1:41 am #92689burga
ParticipanteDa 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…
23 de fevereiro de 2010 às 7:48 pm #92753VINI85
ParticipanteVALEU 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]
23 de fevereiro de 2010 às 10:17 pm #92760marcelomirandola
ParticipanteCara, serviu até pra mim.
Não conhecia a cláusula rollup.
Com certeza vai resolver o problema do vini.24 de fevereiro de 2010 às 11:17 pm #92795VINI85
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…24 de fevereiro de 2010 às 11:58 pm #92796VINI85
ParticipanteSÓ 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]25 de fevereiro de 2010 às 12:20 am #92797burga
ParticipanteEntã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 aPela 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…
26 de fevereiro de 2010 às 5:24 pm #92852VINI85
ParticipanteCara 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 aPela 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]
-
AutorPosts
- Você deve fazer login para responder a este tópico.