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