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
>> > > >
>> > >
>> > >
>> > >
>> >
>>
>>
>  
>

Responder a