Então... Eu faria o seguinte:

1 - Usaria o MAX(data) e o MIN(data) para capturar as datas (dentro de uma
subquery);
2 - Na query mais externa eu pegaria os VALORES correspondentes dessas
datas extremas;
3 - tendo o valor da primeira data e o valor da última data, subtraio um
valor do outro;
4 - subtraio também as próprias datas (para ver o número de dias do
intervalo das duas);

Pronto, tendo isso fica fácil....
Divido o Valor pelo Intervalo das datas e tenho o crescimento diário médio.

No meu entendimento esse valor da  "média de crescimento" não se altera
(afinal, é uma média) se eu calcular todos os intervalos um por um (a cada
15 dias) ou se eu pegar o período TODO de uma vez com os valores extremos,
estou errado?





2013/6/27 J. Laurindo Chiappa <jlchia...@yahoo.com.br>

> **
>
>
> Não, colega : se ele pedir um
>
> SELECT NOME_TABLESPACE, MIN(DATA), MAX(DATA) GROUP BY NOME_TABLESPACE;
>
> ele vai obter a data inicial e a data final para cada grupo, okdoc, MAS
> como obter os valores-detalhe do grupo, ie, para cada data o TOTAL_USADO
> ??? Com GROUP BY vc não consegue agrupar SEM perder acesso aos detalhes, e
> é Justamente o detalhe não-parte da chave que ele precisa....
> Ele conseguiria facilmente obter o resultado via GROUP BY ** SE ** e
> APENAS SE o objetivo dele fosse agrupar/transformar num só valor a
> informação detalhe, tipo :
>
> SELECT NOME_TABLESPACE, MIN(DATA), MAX(DATA), AVG(TOTAL_USADO) GROUP BY
> NOME_TABLESPACE;
>
> mas isso dá a média DENTRO DO GRUPO, e ele já disse em outra msg que não é
> isso que ele quer, ele PRECISA dos valores-detalhe dentro do grupo para
> calcular o crescimento - a média da utilização pura e simplesmente não o
> atende....
>
> []s
>
> Chiappa
>
> --- Em oracle_br@yahoogrupos.com.br, "Milton Bastos Henriquis Jr."
> <miltonbastos@...> escreveu
>
> >
> > Chiappa, eu entendo que ele pode sim usar o GROUP BY, pegando MAX(data) e
> > MIN(data), conforme expliquei no meu e-mail...
> > Concorda?
> >
> >
> >
> > 2013/6/27 J. Laurindo Chiappa <jlchiappa@...>
> >
> > > **
>
> > >
> > >
> > > 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]
> > > >
> > >
> > >
> > >
> >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
>
>  
>


[As partes desta mensagem que não continham texto foram removidas]



------------------------------------

--------------------------------------------------------------------------------------------------------------------------
>Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira 
>responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--------------------------------------------------------------------------------------------------------------------------
>Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » 
>Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: 
>http://www.oraclebr.com.br/  
------------------------------------------------------------------------------------------------------------------------
 Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/oracle_br/

<*> Para sair deste grupo, envie um e-mail para:
    oracle_br-unsubscr...@yahoogrupos.com.br

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html


Responder a