Sim, com ABSOLUTA certeza vc não especificou adequadamente : como eu disse, 
GROUP BY transforma os n registros em um só, e para isso os valores distintos 
tem que ser agrupados também, seja somando, contando, calculando a média,mas o 
fato é que num GROUP BY os valores individuais são eliminados no grupo, não há 
como vc os acessar.... 
   O que vc está diendo agora é que a sua necessidade é DIFERENTE, vc quer 
saber o valor inicial (o primeiro registro, ordenado por data) do grupo, o 
valor final do último registro do grupo (ainda ordenado por data) E fazer uma 
conta de menos com esses valores para saber o Crescimento... 
   Aí é CLARO que o GROUP BY não serve para isso - quem ter a possibilidade de 
agrupar logicamente registros SEM eliminar valores não-chave de grupo  são as 
funções analíticas.... Dá um look nas msgs recentes do grupo que tiveram 
algumas discussões/demonstrações e no site asktom vc acha diversos exemplos, 
como 
http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:122801500346829407#125077500346844087
 ...
   
    []s
        
          Chiappa

--- Em oracle_br@yahoogrupos.com.br, Raphael Franco <phadba@...> escreveu
>
> Chiappa e Rodrigo,
> 
> Acho que não me expressei bem.
> 
> O que eu quero é a media de crescimento das tablespaces.
> Ou seja, primeiro eu tenho que achar a diferença entre as 2 datas (quanto 
> cresceu ou diminuiu):
> 
> > SYSAUX             27-MAY-13      553.13
> > SYSAUX             11-JUN-13      627.56
> > SYSAUX             25-JUN-13      604.88
> 
> 
> 
> 627,56  -  553,13  =  aumentou 74 Mbytes de 27 de maio a 11 de junho.
> 604,56  -  627,56  =  diminuiu 19,68 Mbytes de 11 de junho a 25 de junho.
> 
> Somaria os 2 resultados = 54,32 e divide por 2 (que equivale a cada 15 dias) 
> = 27,16 Mbytes
> 
> 
> A media de crescimento da tablespace SYSAUX a cada 15 dias é de 27,16 Mbytes.
> 
> 
> att.
> Raphael
> 
> 
> 
> 
> ________________________________
>  De: J. Laurindo Chiappa <jlchiappa@...>
> Para: oracle_br@yahoogrupos.com.br 
> Enviadas: Quarta-feira, 26 de Junho de 2013 19:13
> Assunto: [oracle_br] Re: Ajuda SQL
>  
> 
> 
>   
> Pelo que entendi, o que vc quer é montar um Grupo de registros com 
> NOME_TABLESPACE como chave de grupo,  nesse grupo vc terá N registros 
> agrupados/transformados em um só (é o que o GROUP BY faz) , e para cada 
> conjunto de registros vc quer calcular a média : sendo isso mesmo, é afaik um 
> simples caso de :
> 
> SELECT NOME_TABLESPACE, AVG(TOTAL_USADO) FROM TESTE
> GROUP BY NOME_TABLESPACE;
> 
> okdoc ?? Ia ficar mais complexo se vc quisesse se referenciar a algum dos 
> valores dos registros que foram agrupados (digamos, além média do do Grupo vc 
> quer saber/quer exibir na query qual foi a menor e a maior data, digamos - 
> isso vc não faz com GROUP BY, ele "ensanduicha" os N registros 
> transformando-os num só, vc perde os detalhes)), mas como não é o caso (vc só 
> quer saber a média do grupo, não importando nem data nem qtdade de registros 
> agrupados), é bem simples...
> 
> []s
> 
> Chiappa
> 
> --- Em oracle_br@yahoogrupos.com.br, Raphael Franco <phadba@> escreveu
> >
> > Pessoal,
> > 
> > Como estou meio enferrujado no SQL, poderiam me ajudar
> > 
> > 
> > Tenho a seguinte tabela:
> > 
> > SQL> select * from teste;
> > 
> > NOME_TABLESPACE    DATA      TOTAL_USADO
> > ------------------ --------- -----------
> > SYSAUX             27-MAY-13      553.13
> > SYSAUX             11-JUN-13      627.56
> > SYSAUX             25-JUN-13      604.88
> > SYSTEM             27-MAY-13      450.94
> > SYSTEM             11-JUN-13      459.94
> > SYSTEM             25-JUN-13      459.94
> > USERS              27-MAY-13      155.94
> > USERS              11-JUN-13      193.56
> > USERS              25-JUN-13         226
> > 
> > 
> > 
> > 
> > Gostaria de calcular a media de crescimento (Total_Usado) entre as datas.
> > 
> > 
> > POr exemplo:
> > 
> > SYSAUX       627,13 - 553,13 =  74,00
> >              604,88 - 627,56 = -19,68
> > 
> > Calcula a media do resultado = (74,00)+(-19,68) / 2 = 27,16 (media)
> > 
> > 
> > 
> > Teria como fazer isso via SQL ou terei que usar um bloco PL mesmo.
> > 
> > 
> > vlws
> > 
> > Raphael
> > 
> > 
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> 
> 
>  
> 
> [As partes desta mensagem que não continham texto foram removidas]
>


Responder a