Oi seria algo assim?
SELECT DISTINCT a.CodProd, A.Grupo, SUM(A.Qtde) OVER (PARTITION BY A.CODPROD), SUM(A.Qtde) OVER (PARTITION BY A.GRUPO) FROM Pedidos A create table pedidos ( codprod varchar2(10), grupo varchar2(3), qtde number(10) ) ; insert into pedidos values ('bola', 'bri', 10); insert into pedidos values ('bola', 'bri', 8); -- TOTAL 18 BOLAS insert into pedidos values ('boneca', 'bri', 2); -- TOTAL 2 BONECAS insert into pedidos values ('carro', 'bri', 20); -- TOTAL 20 CARROS -- TOTAL 40 BRINQUEDOS insert into pedidos values ('caderno', 'pap', 7); -- TOTAL 7 CADERNOS insert into pedidos values ('livro', 'pap', 3); -- TOTAL 3 LIVROS -- TOTAL 10 PAPELARIA SQL> SELECT DISTINCT a.CodProd, 2 A.Grupo, 3 SUM(A.Qtde) OVER (PARTITION BY A.CODPROD), --aqui eu faço a soma da carteira do produto 4 SUM(A.Qtde) OVER (PARTITION BY A.GRUPO) --Aqui eu gostaria de somar a carteira total do grupo para depois fazer uma porcentagem de quanto a carteira do grupo representa no total...........e isso que não rola 5 FROM Pedidos A 6 ; CODPROD GRUPO SUM(A.QTDE)OVER(PARTITIONBYA.C SUM(A.QTDE)OVER(PARTITIONBYA.G ---------- ----- ------------------------------ ------------------------------ livro pap 3 10 carro bri 20 40 bola bri 18 40 caderno pap 7 10 boneca bri 2 40 Patricia 2013/10/17 Emerson Sanches <emerson.sanc...@gmail.com> > ** > > > > Vou explicar melhor o que quero fazer.............. > Tenho um tabela de pedidos com os campos CodProd, Grupo, Qtde > (simplificando). Preciso fazer um relatório que me pegue a carteira e faca > uma porcentagem da carteira total com a carteira do > item.................temos então > > SELECT A.CodProd, > A.Grupo, > SUM(A.Qtde), --aqui eu faço a soma da carteira do produto > SUM(A.Qtde) OVER (PARTITION BY A.GRUPO) > --Aqui eu gostaria de somar a carteira total do grupo para depois fazer uma > porcentagem de quanto a carteira do grupo representa no total...........e > isso que não rola > FROM Pedidos A > GROUP BY A.CodProd, > A.Grupo > > Espero ter sido claro e obrigado pela atenção de todos.............. > > > > Emerson Sanches > Analista de Sistemas > > > Em 17 de outubro de 2013 11:18, J. Laurindo Chiappa < > jlchia...@yahoo.com.br> escreveu: > > ** >> >> >> Pode muito bem ser , mas como o colega lá citou que queria usar o SUM >> como uma função de grupo E como uma analisadora, de cara Imaginei que era >> Exigido o GROUP BY, transformando o SUM numa função de grupo propriamente >> dita... Mas realmente, se agrupar uma Partição de registros ao invés de >> agrupar "hard", via GROUP BY, aí não tem impedância, o grupo não vai >> "fundir" registros, vc terá os detalhes, aí ANALYTICS podem atuar em cima >> disso ... >> >> Pode ser isso, Emerson, ou a tua lógica EXIGE um GROUP BY ? >> >> []s >> >> Chiappa >> >> --- Em oracle_br@yahoogrupos.com.br, Alencar <alencarboito@...> escreveu >> >> > >> > Bom Dia Chiappa e Émerson, >> > >> > uma solução para esse caso pode ser utilizando PARTITION BY. >> > Tomando como base o exemplo citado pelo Chiappa, podemos retornar o o >> > salário de cada funcionário e uma coluna com o salário acumulando por >> > estado. Neste caso, o query_partition_clause, que define a partição a >> ser >> > avaliada, é informado o campo estado. >> > >> > O select fica da seguinte forma: >> > select estado >> > , nome >> > , salario >> > , sum(salario) OVER (PARTITION BY estado ORDER BY estado desc ROWS >> > UNBOUNDED PRECEDING) acumulado_por_estado >> > from empregados >> > >> > E o resultado é mais ou menos esse: >> > ESTADO NOME SALÁRIO ACUMULADO_POR_ESTADO >> > ------ ---- ------- --------------- >> > São Paulo joão R$ 10,00 R$ 10,00 >> > São Paulo zé R$ 15,00 R$ 25,00 >> > Rio Luis R$ 5,00 R$ 5,00 >> > Rio mané R$ 8,00 R$ 13,00 >> > >> > >> > Abraços! >> > Alencar >> > >> > >> > >> > Em 17 de outubro de 2013 10:20, J. Laurindo Chiappa >> > <jlchiappa@...>escreveu: >> > >> > > ** >> >> > > >> > > >> > > Dia... Eu ** duvido **, colega : veja vc, a função analítica faz uma >> > > soma/contagem/operação em cima de CADA linha lida com uma determinada >> > > ordem, enquanto as funções de grupo 9que EXIGEM um GROUP BY) *** >> JUNTAM *** >> > > múltiplas linhas em uma só.... Logicamente falando, é algo assim : >> > > >> > > => agrupamento feito com analytics da soma de salários por região : >> > > >> > > 1 São Paulo joão R$ 10,00 >> > > 1 São Paulo zé R$ 15,00 >> > > -------- >> > > R$ 25,00 >> > > >> > > 2 Rio Luis R$ 5,00 >> > > 2 Rio mané R$ 8,00 >> > > -------- >> > > 13,00 >> > > >> > > OU SEJA, analytics basicamente ORDENAM o resultset por uma determinada >> > > chave (que seria a região no meu "exemplo"), formando grupos mas SEM >> > > interferir nos registros em princípio, e quando a chave muda ele >> considera >> > > um fim de grupo... Já a função de grupo (com GROUP BY na chave >> região) me >> > > retornaria : >> > > >> > > 1 São Paulo R$ 25,00 >> > > >> > > 2 Rio R$ 13,00 >> > > >> > > OU SEJA , GROUP BY (que é o que a função de grupo exige) logicamente >> > > faland lêem os registros que obedecem á chave e TRANSFORMAM , JUNTAM, >> > > FUNDEM esses N registros em um só, somando/contando/dando a >> > > média/mínimo/máximo/whatever de um valor, MAS os detalhes de cada >> registro >> > > vc perdeu, eles foram logicamente ENSANDUICHADOS, JUNTADOS, COLADOS, >> okdoc >> > > ?? >> > > >> > > No máximo o que vc poderia fazer é alguma sub-querie, tipo : >> > > >> > > SELECT colunas, SUM(coluna) FROM (select que lê dados e ordena/agrupa >> via >> > > analytics) >> > > GROUP BY algimacoluna; >> > > >> > > isso é possível, mas NA MESMA QUERY ter analytics (que lê linha a >> linha) E >> > > função de grupo (que destrói, cola, mergeia as linhas) ao mesmo tempo >> acho >> > > difícil, são coisas meio antagônicas, né ? >> > > >> > > []s >> > > >> > > Chiappa >> > > >> > > --- Em oracle_br@yahoogrupos.com.br, Emerson Sanches >> <emerson.sanches@> >> > > escreveu >> > > > >> > > > Bom dia pessoal da lista, estou tentando usar a função SUM como >> função >> > > > agregada e como função analítica ao mesmo tempo, na mesma select e >> esta >> > > > retornando um erro, é possível fazer isso? >> > > > >> > > > Obrigado pela atenção >> > > > >> > > > >> > > > Emerson Sanches >> > > > Analista de Sistemas >> > > > >> > > >> > > >> > > >> > >> >> > >