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