neca - como eu disse, na Mesma Query não rola, GROUP BY e ANALYTICS tem 
impedância , são Incompatíveis mesmo...
 Provavelmente deve dar para fazer um SELECT de SELECT, com o SELECT do GROUP 
BY fazendo um FROM (SELECT que fazo analytics), mas manda aí pra gente os 
CREATEs e uns INSERTs, que a gente pode tentar algo nesse sentido...

 []s

  Chiappa

--- Em oracle_br@yahoogrupos.com.br, Emerson Sanches <emerson.sanches@...> 
escreveu
>
> 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
> <jlchiappa@...>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