[oracle_br] Re: Ajuda - SQL

2016-04-08 Por tôpico alvaro.rbsfi...@yahoo.com.br [oracle_br]
Diego, Bom dia

Você pode tentar melhorar sua varredura pela expressão regular, fazendo com que 
ele só considere a primeira ocorrência do delimitador encontrado.

Re: [oracle_br] Re: Ajuda sql de monitoramento de jobs.

2013-07-25 Por tôpico Rafael Mendonca
Chiappa, sou seu fã.

 


 De: J. Laurindo Chiappa jlchia...@yahoo.com.br
Para: oracle_br@yahoogrupos.com.br 
Enviadas: Quarta-feira, 24 de Julho de 2013 20:16
Assunto: [oracle_br] Re: Ajuda sql de monitoramento de jobs.
  


 
   
 
Colega, Absolutamente não é difícil : primeiro, talvez vc tenha pensado em 
GROUP BY em algum momento (agrupando por JOB_NAME), e isso TOTALMENTE NÃO se 
encaixa aqui : a questão é o GROUP BY *** faz um SANDUÍCHE dos n registros, 
agrupando os n registros do grupo numa linha só... Nessa linha vc pode ter uma 
CONTAGEM indicando quantos registros foram agrupados, pode ter um máximo, um 
mínimo, uma média, etc, MAS o fato é que a informação individual é logicamente 
eliminada, os N registros do grupo viraram um só 
Isso não sendo possível, uma opção interessante é nós (dentro dos dados 
ordenados por JOB_NAME), usarmos alguma alguma funcionalidade que atribua 
(digamos) 1 para a primeira linha do JOB_NAME sendo lido, 2 para a segunda 
execução, 3 para a terceira, etc, E QUE quando mudar de JOB_NAME resete a 
contagem Aí ficaria MUITO FÁCIL, é só perguntar no WHERE para filtrar esse 
número de linha dependente do JOB_NAME  
Tal funcionalidade existe há MITO TEMPO (desde as priscas eras do Oracle 
8i), e é dada pelas funções analíticas - que, claro, servem para OUTRAS coisas 
também... Na verdade, sempre que vc quer processar a linha anteriormente lida 
- no seu caso para saber se mudou de JOB_NAME -, a primeira coisa que se pensa 
é em alguma função analítica... 
Vamos a um exemplinho (com os MEUS dados, no MEU database, que obviamente não 
vão ser os mesmos que o seus) :

=primeiro, vamos ver os dados brutos, só ordenados :

SYSTEM@o10gr2:SQLSELECT
JOB_NAME,
STATUS,
LOG_DATE
FROM  DBA_SCHEDULER_JOB_RUN_DETAILS WHERE OWNER='EXFSYS'
order by job_name, log_date;

JOB_NAME  STATUS LOG_DATE
- -- 
RLM$EVTCLEANUPSUCCEEDED  23/07/13 20:19:43,712000 -03:00
RLM$EVTCLEANUPSUCCEEDED  23/07/13 20:41:15,008000 -03:00
RLM$EVTCLEANUPSUCCEEDED  24/07/13 13:55:58,362000 -03:00
RLM$EVTCLEANUPSUCCEEDED  24/07/13 14:41:14,72 -03:00
RLM$EVTCLEANUPSUCCEEDED  24/07/13 15:41:14,803000 -03:00
RLM$EVTCLEANUPSUCCEEDED  24/07/13 16:41:14,959000 -03:00
RLM$EVTCLEANUPSUCCEEDED  24/07/13 17:41:14,106000 -03:00
RLM$EVTCLEANUPSUCCEEDED  24/07/13 19:20:49,353000 -03:00
RLM$EVTCLEANUPSUCCEEDED  24/07/13 19:41:14,698000 -03:00
RLM$SCHDNEGACTION SUCCEEDED  23/07/13 20:19:43,962000 -03:00
RLM$SCHDNEGACTION SUCCEEDED  24/07/13 13:55:58,939000 -03:00
RLM$SCHDNEGACTION SUCCEEDED  24/07/13 14:53:34,171000 -03:00
RLM$SCHDNEGACTION SUCCEEDED  24/07/13 15:51:10,22 -03:00
RLM$SCHDNEGACTION SUCCEEDED  24/07/13 16:48:46,115000 -03:00
RLM$SCHDNEGACTION SUCCEEDED  24/07/13 17:46:22,135000 -03:00
RLM$SCHDNEGACTION SUCCEEDED  24/07/13 19:20:50,18 -03:00

16 linhas selecionadas.

== legal : como eu falei acima, vamos Classificar , dar um número, para cada 
linha com o mesmo JOB_NAME :

SYSTEM@o10gr2:SQLSELECT
JOB_NAME,
STATUS,
LOG_DATE,
RANK() OVER(PARTITION BY JOB_NAME ORDER BY LOG_DATE) NUM_DA_EXEC
FROM  DBA_SCHEDULER_JOB_RUN_DETAILS WHERE OWNER='EXFSYS';

JOB_NAME  STATUS LOG_DATE 
NUM_DA_EXEC
- --  
---
RLM$EVTCLEANUPSUCCEEDED  23/07/13 20:19:43,712000 -03:001
RLM$EVTCLEANUPSUCCEEDED  23/07/13 20:41:15,008000 -03:002
RLM$EVTCLEANUPSUCCEEDED  24/07/13 13:55:58,362000 -03:003
RLM$EVTCLEANUPSUCCEEDED  24/07/13 14:41:14,72 -03:004
RLM$EVTCLEANUPSUCCEEDED  24/07/13 15:41:14,803000 -03:005
RLM$EVTCLEANUPSUCCEEDED  24/07/13 16:41:14,959000 -03:006
RLM$EVTCLEANUPSUCCEEDED  24/07/13 17:41:14,106000 -03:007
RLM$EVTCLEANUPSUCCEEDED  24/07/13 19:20:49,353000 -03:008
RLM$EVTCLEANUPSUCCEEDED  24/07/13 19:41:14,698000 -03:009
RLM$SCHDNEGACTION SUCCEEDED  23/07/13 20:19:43,962000 -03:001
RLM$SCHDNEGACTION SUCCEEDED  24/07/13 13:55:58,939000 -03:002
RLM$SCHDNEGACTION SUCCEEDED  24/07/13 14:53:34,171000 -03:003
RLM$SCHDNEGACTION SUCCEEDED  24/07/13 15:51:10,22 -03:004
RLM$SCHDNEGACTION SUCCEEDED  24/07/13 16:48:46,115000 -03:005
RLM$SCHDNEGACTION SUCCEEDED  24/07/13 17:46:22,135000 -03:006
RLM$SCHDNEGACTION SUCCEEDED  24/07/13 19:20:50,18 -03:007

16 linhas selecionadas.

= Taí, EXATAMENTE o que queríamos : o RANK indica que vc vai ter uma 
classificação dentro de um contador, o PARTITION BY JOB_NAME indica que o 
contador vai ser em cima da coluna JOB_NAME (ier, assim que mudar o JOB_NAME o

[oracle_br] Re: Ajuda sql de monitoramento de jobs.

2013-07-25 Por tôpico J. Laurindo Chiappa
  Friendão, fico contente de poder ter ajudado, e espero ter conseguido passar 
um pouco de conhecimento, sempre o objetivo aqui... De resto, não esquenta : 
quando inventarem o whisky por e-mail, manda pra gente um 18 aninhos que tá 
tudo certo :)..

 []s

  Chiappa

--- Em oracle_br@yahoogrupos.com.br, Rafael Mendonca raffaell.ti77@... 
escreveu

 Chiappa, sou seu fã.
 
  
 
 
  De: J. Laurindo Chiappa jlchiappa@...
 Para: oracle_br@yahoogrupos.com.br 
 Enviadas: Quarta-feira, 24 de Julho de 2013 20:16
 Assunto: [oracle_br] Re: Ajuda sql de monitoramento de jobs.
   
 
 
  
    
  
 Colega, Absolutamente não é difícil : primeiro, talvez vc tenha pensado em 
 GROUP BY em algum momento (agrupando por JOB_NAME), e isso TOTALMENTE NÃO se 
 encaixa aqui : a questão é o GROUP BY *** faz um SANDUÍCHE dos n registros, 
 agrupando os n registros do grupo numa linha só... Nessa linha vc pode ter 
 uma CONTAGEM indicando quantos registros foram agrupados, pode ter um máximo, 
 um mínimo, uma média, etc, MAS o fato é que a informação individual é 
 logicamente eliminada, os N registros do grupo viraram um só 
 Isso não sendo possível, uma opção interessante é nós (dentro dos dados 
 ordenados por JOB_NAME), usarmos alguma alguma funcionalidade que atribua 
 (digamos) 1 para a primeira linha do JOB_NAME sendo lido, 2 para a segunda 
 execução, 3 para a terceira, etc, E QUE quando mudar de JOB_NAME resete a 
 contagem Aí ficaria MUITO FÁCIL, é só perguntar no WHERE para filtrar 
 esse número de linha dependente do JOB_NAME  
 Tal funcionalidade existe há MITO TEMPO (desde as priscas eras do Oracle 
 8i), e é dada pelas funções analíticas - que, claro, servem para OUTRAS 
 coisas também... Na verdade, sempre que vc quer processar a linha 
 anteriormente lida - no seu caso para saber se mudou de JOB_NAME -, a 
 primeira coisa que se pensa é em alguma função analítica... 
 Vamos a um exemplinho (com os MEUS dados, no MEU database, que obviamente não 
 vão ser os mesmos que o seus) :
 
 =primeiro, vamos ver os dados brutos, só ordenados :
 
 SYSTEM@o10gr2:SQLSELECT
 JOB_NAME,
 STATUS,
 LOG_DATE
 FROM  DBA_SCHEDULER_JOB_RUN_DETAILS WHERE OWNER='EXFSYS'
 order by job_name, log_date;
 
 JOB_NAME  STATUS LOG_DATE
 - -- 
 RLM$EVTCLEANUPSUCCEEDED  23/07/13 20:19:43,712000 -03:00
 RLM$EVTCLEANUPSUCCEEDED  23/07/13 20:41:15,008000 -03:00
 RLM$EVTCLEANUPSUCCEEDED  24/07/13 13:55:58,362000 -03:00
 RLM$EVTCLEANUPSUCCEEDED  24/07/13 14:41:14,72 -03:00
 RLM$EVTCLEANUPSUCCEEDED  24/07/13 15:41:14,803000 -03:00
 RLM$EVTCLEANUPSUCCEEDED  24/07/13 16:41:14,959000 -03:00
 RLM$EVTCLEANUPSUCCEEDED  24/07/13 17:41:14,106000 -03:00
 RLM$EVTCLEANUPSUCCEEDED  24/07/13 19:20:49,353000 -03:00
 RLM$EVTCLEANUPSUCCEEDED  24/07/13 19:41:14,698000 -03:00
 RLM$SCHDNEGACTION SUCCEEDED  23/07/13 20:19:43,962000 -03:00
 RLM$SCHDNEGACTION SUCCEEDED  24/07/13 13:55:58,939000 -03:00
 RLM$SCHDNEGACTION SUCCEEDED  24/07/13 14:53:34,171000 -03:00
 RLM$SCHDNEGACTION SUCCEEDED  24/07/13 15:51:10,22 -03:00
 RLM$SCHDNEGACTION SUCCEEDED  24/07/13 16:48:46,115000 -03:00
 RLM$SCHDNEGACTION SUCCEEDED  24/07/13 17:46:22,135000 -03:00
 RLM$SCHDNEGACTION SUCCEEDED  24/07/13 19:20:50,18 -03:00
 
 16 linhas selecionadas.
 
 == legal : como eu falei acima, vamos Classificar , dar um número, para cada 
 linha com o mesmo JOB_NAME :
 
 SYSTEM@o10gr2:SQLSELECT
 JOB_NAME,
 STATUS,
 LOG_DATE,
 RANK() OVER(PARTITION BY JOB_NAME ORDER BY LOG_DATE) NUM_DA_EXEC
 FROM  DBA_SCHEDULER_JOB_RUN_DETAILS WHERE OWNER='EXFSYS';
 
 JOB_NAME  STATUS LOG_DATE 
 NUM_DA_EXEC
 - --  
 ---
 RLM$EVTCLEANUPSUCCEEDED  23/07/13 20:19:43,712000 -03:001
 RLM$EVTCLEANUPSUCCEEDED  23/07/13 20:41:15,008000 -03:002
 RLM$EVTCLEANUPSUCCEEDED  24/07/13 13:55:58,362000 -03:003
 RLM$EVTCLEANUPSUCCEEDED  24/07/13 14:41:14,72 -03:004
 RLM$EVTCLEANUPSUCCEEDED  24/07/13 15:41:14,803000 -03:005
 RLM$EVTCLEANUPSUCCEEDED  24/07/13 16:41:14,959000 -03:006
 RLM$EVTCLEANUPSUCCEEDED  24/07/13 17:41:14,106000 -03:007
 RLM$EVTCLEANUPSUCCEEDED  24/07/13 19:20:49,353000 -03:008
 RLM$EVTCLEANUPSUCCEEDED  24/07/13 19:41:14,698000 -03:009
 RLM$SCHDNEGACTION SUCCEEDED  23/07/13 20:19:43,962000 -03:001
 RLM$SCHDNEGACTION SUCCEEDED  24/07/13 13:55:58,939000 -03:002
 RLM$SCHDNEGACTION SUCCEEDED  24/07/13 14:53:34,171000 -03:003
 RLM$SCHDNEGACTION SUCCEEDED  24/07/13 15:51:10,22 -03:004
 RLM$SCHDNEGACTION SUCCEEDED

[oracle_br] Re: Ajuda sql de monitoramento de jobs.

2013-07-24 Por tôpico ederson2001br
Rafael,

Tem formas mais elegantes de fazer isto, mas rapidinho aqui eu fiz com 
subselect (substitua com o nome do seu job em B.JOB_NAME):

select * from
(SELECT  rownum linha,
a.* FROM (
SELECT B.LOG_ID, B.OWNER, B.JOB_NAME, B.LOG_DATE
  FROM dba_scheduler_job_run_details B
 WHERE B.JOB_NAME = 'RLM$EVTCLEANUP'
   AND TRUNC(B.LOG_DATE)=TRUNC(SYSDATE)
 ORDER BY 4 
) a
) 
where linha  6



Ederson Elias
DBA Oracle
http://br.linkedin.com/pub/ederson-elias/24/8b/8b0

Labor improbus omnia vincit




--- Em oracle_br@yahoogrupos.com.br, Rafael Mendonca raffaell.ti77@... 
escreveu

 SELECT to_char(log_date, 'DD-MON-YY HH24:MI:SS') TIMESTAMP, job_name, status,
    SUBSTR(additional_info, 1, 300) ADDITIONAL_INFO
   FROM dba_scheduler_job_run_details 
  where owner = 'XUXA'
  ORDER BY log_date desc;
  
  
 Pessoal, eu queria que essa consulta me retornasse as últimas 5 execuções por 
 nome do JOB. Com essa consulta ele me mostra tudo.
 Alguém poderia ajudar?




Re: [oracle_br] Re: Ajuda SQL

2013-07-24 Por tôpico Ricardo Corrêa
 Abaixo segue select demonstrando tanto o que foi pedido quanto 
outras funções.

SELECT NOME,
AVG(TAM_ATUAL-NVL(TAM_ANTERIOR,TAM_ATUAL)) MEDIA_CRESCIMENTO,-- 
usado o NVL para quando for o primeiro dia o crescimento ser zero
MIN(TAM_ATUAL-NVL(TAM_ANTERIOR,TAM_ATUAL)) MENOR_CRESCIMENTO,-- 
usado o NVL para quando for o primeiro dia o crescimento ser zero
MAX(TAM_ATUAL-NVL(TAM_ANTERIOR,TAM_ATUAL)) MAIOR_CRESCIMENTO,-- 
usado o NVL para quando for o primeiro dia o crescimento ser zero

COUNT(*) QTD_REGISTROS,
MAX(DATA) ULTIMA_DATA,
MIN(DATA) PRIMEIRA_DATA

   FROM (select A.TOTAL_USADO TAM_ATUAL,
(SELECT MAX(B.TOTAL_USADO)
   FROM TESTE_ B
  WHERE B.NOME_TABLESPACE = A.NOME_TABLESPACE
AND B.DATA  A.DATA) TAM_ANTERIOR,
A.DATA,
A.NOME_TABLESPACE NOME
   from TESTE_ a
  WHERE A.DATA BETWEEN '21/01/2013' AND '25/07/2013') DADOS
GROUP BY DADOS.NOME

On 26/06/2013 19:13, J. Laurindo Chiappa wrote:
 NOME_TABLESPACEDATA  TOTAL_USADO



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



[oracle_br] Re: Ajuda sql de monitoramento de jobs.

2013-07-24 Por tôpico J. Laurindo Chiappa
  Colega, Absolutamente não é difícil : primeiro, talvez vc tenha pensado em 
GROUP BY em algum momento (agrupando por JOB_NAME), e isso TOTALMENTE NÃO se 
encaixa aqui : a questão é o GROUP BY *** faz um SANDUÍCHE dos n registros, 
agrupando os n registros do grupo numa linha só... Nessa linha vc pode ter uma 
CONTAGEM indicando quantos registros foram agrupados, pode ter um máximo, um 
mínimo, uma média, etc, MAS o fato é que a informação individual é logicamente 
eliminada, os N registros do grupo viraram um só 
   Isso não sendo possível, uma opção interessante é nós (dentro dos dados 
ordenados por JOB_NAME), usarmos alguma alguma funcionalidade que atribua 
(digamos) 1 para a primeira linha do JOB_NAME sendo lido, 2 para a segunda 
execução, 3 para a terceira, etc, E QUE quando mudar de JOB_NAME resete a 
contagem Aí ficaria MUITO FÁCIL, é só perguntar no WHERE para filtrar esse 
número de linha dependente do JOB_NAME  
Tal funcionalidade existe há MITO TEMPO (desde as priscas eras do 
Oracle 8i), e é dada pelas funções analíticas - que, claro, servem para OUTRAS 
coisas também... Na verdade, sempre que vc quer processar a linha 
anteriormente lida - no seu caso para saber se mudou de JOB_NAME -, a primeira 
coisa que se pensa é em alguma função analítica... 
Vamos a um exemplinho (com os MEUS dados, no MEU database, que obviamente 
não vão ser os mesmos que o seus) :

=primeiro, vamos ver os dados brutos, só ordenados :

SYSTEM@o10gr2:SQLSELECT
  JOB_NAME,
  STATUS,
  LOG_DATE
  FROM  DBA_SCHEDULER_JOB_RUN_DETAILS WHERE OWNER='EXFSYS'
  order by job_name, log_date;

JOB_NAME  STATUS LOG_DATE
- -- 
RLM$EVTCLEANUPSUCCEEDED  23/07/13 20:19:43,712000 -03:00
RLM$EVTCLEANUPSUCCEEDED  23/07/13 20:41:15,008000 -03:00
RLM$EVTCLEANUPSUCCEEDED  24/07/13 13:55:58,362000 -03:00
RLM$EVTCLEANUPSUCCEEDED  24/07/13 14:41:14,72 -03:00
RLM$EVTCLEANUPSUCCEEDED  24/07/13 15:41:14,803000 -03:00
RLM$EVTCLEANUPSUCCEEDED  24/07/13 16:41:14,959000 -03:00
RLM$EVTCLEANUPSUCCEEDED  24/07/13 17:41:14,106000 -03:00
RLM$EVTCLEANUPSUCCEEDED  24/07/13 19:20:49,353000 -03:00
RLM$EVTCLEANUPSUCCEEDED  24/07/13 19:41:14,698000 -03:00
RLM$SCHDNEGACTION SUCCEEDED  23/07/13 20:19:43,962000 -03:00
RLM$SCHDNEGACTION SUCCEEDED  24/07/13 13:55:58,939000 -03:00
RLM$SCHDNEGACTION SUCCEEDED  24/07/13 14:53:34,171000 -03:00
RLM$SCHDNEGACTION SUCCEEDED  24/07/13 15:51:10,22 -03:00
RLM$SCHDNEGACTION SUCCEEDED  24/07/13 16:48:46,115000 -03:00
RLM$SCHDNEGACTION SUCCEEDED  24/07/13 17:46:22,135000 -03:00
RLM$SCHDNEGACTION SUCCEEDED  24/07/13 19:20:50,18 -03:00

16 linhas selecionadas.

== legal : como eu falei acima, vamos Classificar , dar um número, para cada 
linha com o mesmo JOB_NAME :

SYSTEM@o10gr2:SQLSELECT
   JOB_NAME,
   STATUS,
   LOG_DATE,
   RANK() OVER(PARTITION BY JOB_NAME ORDER BY LOG_DATE) NUM_DA_EXEC
  FROM  DBA_SCHEDULER_JOB_RUN_DETAILS WHERE OWNER='EXFSYS';

JOB_NAME  STATUS LOG_DATE 
NUM_DA_EXEC
- --  
---
RLM$EVTCLEANUPSUCCEEDED  23/07/13 20:19:43,712000 -03:001
RLM$EVTCLEANUPSUCCEEDED  23/07/13 20:41:15,008000 -03:002
RLM$EVTCLEANUPSUCCEEDED  24/07/13 13:55:58,362000 -03:003
RLM$EVTCLEANUPSUCCEEDED  24/07/13 14:41:14,72 -03:004
RLM$EVTCLEANUPSUCCEEDED  24/07/13 15:41:14,803000 -03:005
RLM$EVTCLEANUPSUCCEEDED  24/07/13 16:41:14,959000 -03:006
RLM$EVTCLEANUPSUCCEEDED  24/07/13 17:41:14,106000 -03:007
RLM$EVTCLEANUPSUCCEEDED  24/07/13 19:20:49,353000 -03:008
RLM$EVTCLEANUPSUCCEEDED  24/07/13 19:41:14,698000 -03:009
RLM$SCHDNEGACTION SUCCEEDED  23/07/13 20:19:43,962000 -03:001
RLM$SCHDNEGACTION SUCCEEDED  24/07/13 13:55:58,939000 -03:002
RLM$SCHDNEGACTION SUCCEEDED  24/07/13 14:53:34,171000 -03:003
RLM$SCHDNEGACTION SUCCEEDED  24/07/13 15:51:10,22 -03:004
RLM$SCHDNEGACTION SUCCEEDED  24/07/13 16:48:46,115000 -03:005
RLM$SCHDNEGACTION SUCCEEDED  24/07/13 17:46:22,135000 -03:006
RLM$SCHDNEGACTION SUCCEEDED  24/07/13 19:20:50,18 -03:007

16 linhas selecionadas.

 = Taí, EXATAMENTE o que queríamos : o RANK indica que vc vai ter uma 
classificação dentro de um contador, o PARTITION BY JOB_NAME indica que o 
contador vai ser em cima da coluna JOB_NAME (ier, assim que mudar o JOB_NAME o 
contador é zerado, voltando a 1 no próximo JOB_NAME), e dentro de cada JOB_NAME 
as linhas devem ser ordenadas por LOG_DATE, é o que o ORDER BY faz, e essa 
coluna com o ranking, com a 

Re: [oracle_br] Re: Ajuda SQL

2013-07-01 Por tôpico Raphael Franco
André,

Agradeço!
Ja consegui me virar usando sub-query e union.


Raphael




 De: Andre Santos andre.psantos...@gmail.com
Para: oracle_br@yahoogrupos.com.br 
Enviadas: Sexta-feira, 28 de Junho de 2013 14:40
Assunto: Re: [oracle_br] Re: Ajuda SQL
 

Raphael

Se quiser, posso ajudar a montar a query, usando função analítica (ao invés
de proc.). Ok?

[ ]

André



Em 27 de junho de 2013 12:12, Raphael Franco pha...@yahoo.com.br escreveu:

 **


 Miltão,

 Acho que minha calc ta com defeito... rsrs.

 Valeu... é por ai mesmo!
 O unico problema é que se tiver um buraco de 3 dias, por exemplo, a
 media nao vai diaria.
 Vou tratar em uma Proc mesmo.

 t+
 Raphael

 
 De: Milton Bastos Henriquis Jr. miltonbas...@gmail.com
 Para: oracle_br@yahoogrupos.com.br
 Enviadas: Quinta-feira, 27 de Junho de 2013 10:35
 Assunto: Re: [oracle_br] Re: Ajuda SQL



 Há um erro bem grosso de matemática no teu e-mail!

 604,56  -  627,56  =  diminuiu 19,68 Mbytes de 11 de junho a 25 de junho.

 Na minha calculadora dá 23, e não 19,68... rs

 Não é mais fácil você pegar o valor da data mais recente e subtrair da data
 mais antiga?

 25-JUN-13      604.88
 27-MAY-13      553.13

 604,88 - 553,13 = 51,75

 Além disso, aplique a mesma conta para as próprias datas:
 25/06/2013 - 27/05/2013 = (ACHO que se vc subtrair duas datas no Oracle ele
 vai te retornar a diferença em DIAS, o que é perfeito pra vc).

 Assim vc tem o número de dias e também o crescimento total.
 Divide o crescimento total pelo numero de dias e vc tem a
 média de
 crescimento diário.

 Se quiser essa média quinzenal, basta multiplicar por 15.

 Fui claro?

 Isso no select é bem fácil...
 GROUP BY pela tablespace, como os colegas já passaram;
 Pegue o MAX() e MIN() das datas;
 Pegue os valores dessas duas datas pra diminuir um pelo outro conforme
 expliquei acima.

 Att,

 Miltão
 http://certificacaobd.com.br

 2013/6/27 Raphael Franco pha...@yahoo.com.br

  **
 
 
  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 jlchia...@yahoo.com.br
  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

Re: [oracle_br] Re: Ajuda SQL

2013-06-28 Por tôpico Raphael Franco
Miltão,

Acho que minha calc ta com defeito... rsrs.

Valeu... é por ai mesmo!
O unico problema é que se tiver um buraco de 3 dias, por exemplo, a media nao 
vai diaria.
Vou tratar em uma Proc mesmo.

t+
Raphael





 De: Milton Bastos Henriquis Jr. miltonbas...@gmail.com
Para: oracle_br@yahoogrupos.com.br 
Enviadas: Quinta-feira, 27 de Junho de 2013 10:35
Assunto: Re: [oracle_br] Re: Ajuda SQL
 

Há um erro bem grosso de matemática no teu e-mail!

604,56  -  627,56  =  diminuiu 19,68 Mbytes de 11 de junho a 25 de junho.

Na minha calculadora dá 23, e não 19,68... rs


Não é mais fácil você pegar o valor da data mais recente e subtrair da data
mais antiga?

25-JUN-13      604.88
27-MAY-13      553.13

604,88 - 553,13 = 51,75

Além disso, aplique a mesma conta para as próprias datas:
25/06/2013 - 27/05/2013 = (ACHO que se vc subtrair duas datas no Oracle ele
vai te retornar a diferença em DIAS, o que é perfeito pra vc).

Assim vc tem o número de dias e também o crescimento total.
Divide o crescimento total pelo numero de dias e vc tem a
 média de
crescimento diário.

Se quiser essa média quinzenal, basta multiplicar por 15.

Fui claro?

Isso no select é bem fácil...
GROUP BY pela tablespace, como os colegas já passaram;
Pegue o MAX() e MIN() das datas;
Pegue os valores dessas duas datas pra diminuir um pelo outro conforme
expliquei acima.


Att,

Miltão
http://certificacaobd.com.br


2013/6/27 Raphael Franco pha...@yahoo.com.br

 **


 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 jlchia...@yahoo.com.br
 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]





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

Re: [oracle_br] Re: Ajuda SQL

2013-06-28 Por tôpico Andre Santos
Raphael

Se quiser, posso ajudar a montar a query, usando função analítica (ao invés
de proc.). Ok?

[ ]

André



Em 27 de junho de 2013 12:12, Raphael Franco pha...@yahoo.com.br escreveu:

 **


 Miltão,

 Acho que minha calc ta com defeito... rsrs.

 Valeu... é por ai mesmo!
 O unico problema é que se tiver um buraco de 3 dias, por exemplo, a
 media nao vai diaria.
 Vou tratar em uma Proc mesmo.

 t+
 Raphael

 
 De: Milton Bastos Henriquis Jr. miltonbas...@gmail.com
 Para: oracle_br@yahoogrupos.com.br
 Enviadas: Quinta-feira, 27 de Junho de 2013 10:35
 Assunto: Re: [oracle_br] Re: Ajuda SQL



 Há um erro bem grosso de matemática no teu e-mail!

 604,56  -  627,56  =  diminuiu 19,68 Mbytes de 11 de junho a 25 de junho.

 Na minha calculadora dá 23, e não 19,68... rs

 Não é mais fácil você pegar o valor da data mais recente e subtrair da data
 mais antiga?

 25-JUN-13  604.88
 27-MAY-13  553.13

 604,88 - 553,13 = 51,75

 Além disso, aplique a mesma conta para as próprias datas:
 25/06/2013 - 27/05/2013 = (ACHO que se vc subtrair duas datas no Oracle ele
 vai te retornar a diferença em DIAS, o que é perfeito pra vc).

 Assim vc tem o número de dias e também o crescimento total.
 Divide o crescimento total pelo numero de dias e vc tem a
 média de
 crescimento diário.

 Se quiser essa média quinzenal, basta multiplicar por 15.

 Fui claro?

 Isso no select é bem fácil...
 GROUP BY pela tablespace, como os colegas já passaram;
 Pegue o MAX() e MIN() das datas;
 Pegue os valores dessas duas datas pra diminuir um pelo outro conforme
 expliquei acima.

 Att,

 Miltão
 http://certificacaobd.com.br

 2013/6/27 Raphael Franco pha...@yahoo.com.br

  **
 
 
  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
   SYSAUX11-JUN-13  627.56
   SYSAUX25-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 jlchia...@yahoo.com.br
  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_TABLESPACEDATA  TOTAL_USADO
   -- -
 ---
   SYSAUX27-MAY-13  553.13
   SYSAUX11-JUN-13  627.56
   SYSAUX25-JUN-13  604.88
   SYSTEM27-MAY-13  450.94
   SYSTEM11-JUN-13  459.94
   SYSTEM25-JUN-13  459.94
   USERS  27-MAY-13  155.94
   USERS  11-JUN-13  193.56
   USERS  25-JUN-13226
  
  
 
 
  
   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]

 

 --
 Atenção! As mensagens do grupo ORACLE_BR são

Re: [oracle_br] Re: Ajuda SQL

2013-06-27 Por tôpico Milton Bastos Henriquis Jr.
Há um erro bem grosso de matemática no teu e-mail!

604,56  -  627,56  =  diminuiu 19,68 Mbytes de 11 de junho a 25 de junho.

Na minha calculadora dá 23, e não 19,68... rs


Não é mais fácil você pegar o valor da data mais recente e subtrair da data
mais antiga?

25-JUN-13  604.88
27-MAY-13  553.13

604,88 - 553,13 = 51,75

Além disso, aplique a mesma conta para as próprias datas:
25/06/2013 - 27/05/2013 = (ACHO que se vc subtrair duas datas no Oracle ele
vai te retornar a diferença em DIAS, o que é perfeito pra vc).

Assim vc tem o número de dias e também o crescimento total.
Divide o crescimento total pelo numero de dias e vc tem a média de
crescimento diário.

Se quiser essa média quinzenal, basta multiplicar por 15.

Fui claro?

Isso no select é bem fácil...
GROUP BY pela tablespace, como os colegas já passaram;
Pegue o MAX() e MIN() das datas;
Pegue os valores dessas duas datas pra diminuir um pelo outro conforme
expliquei acima.


Att,

Miltão
http://certificacaobd.com.br


2013/6/27 Raphael Franco pha...@yahoo.com.br

 **


 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 jlchia...@yahoo.com.br
 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_TABLESPACEDATA  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]





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

Re: [oracle_br] Re: Ajuda SQL

2013-06-27 Por tôpico Andre Santos
Raphael

Neste caso, você pode montar uma consulta com funções analíticas.
Procure pelas funções LEAD e LAG.
A função AVG também aceita sintaxe/uso como função analítica (definindo uma
janela e ordenação).

Mas analise bem o que fará sentido, pois o que você nos explicou seria um
ponto médio [(a+b)/2]... não exatamente uma média [somatória /
num_ocorrências].

[ ]

André




Em 27 de junho de 2013 09:31, Raphael Franco pha...@yahoo.com.br 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 jlchia...@yahoo.com.br
 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_TABLESPACEDATA  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]





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




[oracle_br] Re: Ajuda SQL

2013-06-27 Por tôpico J. Laurindo Chiappa
  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:0P11_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]





Re: [oracle_br] Re: Ajuda SQL

2013-06-27 Por tôpico Milton Bastos Henriquis Jr.
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 jlchia...@yahoo.com.br

 **


 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:0P11_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_TABLESPACEDATA  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]





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

[oracle_br] Re: Ajuda SQL

2013-06-27 Por tôpico J. Laurindo Chiappa
  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:0P11_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_TABLESPACEDATA  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

Re: [oracle_br] Re: Ajuda SQL

2013-06-27 Por tôpico Milton Bastos Henriquis Jr.
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:0P11_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

[oracle_br] Re: Ajuda SQL

2013-06-27 Por tôpico J. Laurindo Chiappa
  Ah sim, é o que se fazia antes das funções analíticas, acessar a(s) tabela(s) 
2x : uma vez para se agrupar, e uma segunda vez (numa outer query) para buscar 
os detalhes que foram suprimidos na agrupação, sim é possível O que não é 
possível é Só e Apenas com o GROUP BY, como eu disse...
 E é claro, Muito Provavelmente a função analítica, por não forçar a acessar 2x 
a(s) tabela(s) - com Analytics no momento mesmo em que os dados estão sendo 
lidos a janela de agrupamento vai sendo montada - , deve ser mais 
performática...

 []s

  Chiappa

--- Em oracle_br@yahoogrupos.com.br, Milton Bastos Henriquis Jr. 
miltonbastos@... escreveu

 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 jlchiappa@...
 
  **
 
 
  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:0P11_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

[oracle_br] Re: Ajuda SQL

2013-06-26 Por tôpico J. Laurindo Chiappa
  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]





[oracle_br] Re: Ajuda SQL Loader

2006-07-18 Por tôpico jlchiappa
--- Em oracle_br@yahoogrupos.com.br, Rodrigo Lether [EMAIL PROTECTED] 
   O comando SQLLDR tenho de utilizar no prompt  ou no sqlplus ???

loader é um programa-executável :

C:\oraclexe\app\oracle\product\10.2.0\server\BINdir *sqlldr*
 O volume na unidade C não tem nome.
 O número de série do volume é 507A-DFA1

 Pasta de C:\oraclexe\app\oracle\product\10.2.0\server\BIN

02/02/2006  00:43   450.560 sqlldr.exe
   1 arquivo(s)450.560 bytes
   0 pasta(s)  5.598.797.824 bytes disponíveis

como tal, ele pode ser executado num prompt de comando, OU via shell 
script/script de comandos do teu SO, OU com a tool de digitação  
execução de comandos do teu SO (botão iniciar opção executar se for 
m$win, menu do sistema se for linux), ou similares Vc até pode 
executar programas externos de dentro do sqlplus, via instrução HOST, 
seria tipo :

SQLhost pathenomedo programaquequero

== MAS o plus tem limitações pra isso, eu prefiro sempre usar a 
linha de comandos.

   Preciso setar alguma coisa ???

Bom, primeiro a recomendação para performance ótima é SEMPRE que vc 
tenha o arquivo-texto, o controlfile e o executável do loader locais 
na MESMA máquina que o banco, evitando tráfego de rede excessivo... 
Quanto à setar, depende : SE vc só tem o banco de produto Oracle 
nessa máquina, certamente as vars de home, sid e path já estarão 
certas, não precisará de nada. Já se vc tiver algum outro produto 
Oracle, vc provavelmnete VAI ter várias homes (ie, vários 
diretórios), aí vc precisaria indicar, seria algo do tipo :

C:\SET ORACLE_SID=siddobancoemquestão
C:\SET ORACLE_HOME=discoepathcompletodooraclehome
C:\SET PATH=%ORACLE_HOME\BIN%;%PATH%

e aí sim vc chama o loader com sqlldr usuario/senha data=nomedoarq

== eu NÂO passei o @hoststring justamente para ser conexão LOCAL, 
sim ?? E é claro, aqui usei a sintaxe de prompt de comandos win, se 
for unix/linux use o correspondente adequado...

[]s

 Chiappa






--
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--__

Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine 
__
O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o 
link do mesmo para evitar trafego(pedidos) desnecessário. 
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:
[EMAIL PROTECTED]

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

 





Re: [oracle_br] Re: Ajuda SQL Loader

2006-07-18 Por tôpico Rodrigo Lether
No caso eu estou na maquina cliente e quando tento executar o SQLLDR no prompt 
DOS da como se o comando nao existise.
   
  Sera que eu tenho de estar na maquina servidor ???
   
  Obrigado,
  Rodrigo
  

jlchiappa [EMAIL PROTECTED] escreveu:
  --- Em oracle_br@yahoogrupos.com.br, Rodrigo Lether [EMAIL PROTECTED] 
   O comando SQLLDR tenho de utilizar no prompt  ou no sqlplus ???

loader é um programa-executável :

C:\oraclexe\app\oracle\product\10.2.0\server\BINdir *sqlldr*
O volume na unidade C não tem nome.
O número de série do volume é 507A-DFA1

Pasta de C:\oraclexe\app\oracle\product\10.2.0\server\BIN

02/02/2006  00:43   450.560 sqlldr.exe
   1 arquivo(s)450.560 bytes
   0 pasta(s)  5.598.797.824 bytes disponíveis

como tal, ele pode ser executado num prompt de comando, OU via shell 
script/script de comandos do teu SO, OU com a tool de digitação  
execução de comandos do teu SO (botão iniciar opção executar se for 
m$win, menu do sistema se for linux), ou similares Vc até pode 
executar programas externos de dentro do sqlplus, via instrução HOST, 
seria tipo :

SQLhost pathenomedo programaquequero

== MAS o plus tem limitações pra isso, eu prefiro sempre usar a 
linha de comandos.

   Preciso setar alguma coisa ???

Bom, primeiro a recomendação para performance ótima é SEMPRE que vc 
tenha o arquivo-texto, o controlfile e o executável do loader locais 
na MESMA máquina que o banco, evitando tráfego de rede excessivo... 
Quanto à setar, depende : SE vc só tem o banco de produto Oracle 
nessa máquina, certamente as vars de home, sid e path já estarão 
certas, não precisará de nada. Já se vc tiver algum outro produto 
Oracle, vc provavelmnete VAI ter várias homes (ie, vários 
diretórios), aí vc precisaria indicar, seria algo do tipo :

C:\SET ORACLE_SID=siddobancoemquestão
C:\SET ORACLE_HOME=discoepathcompletodooraclehome
C:\SET PATH=%ORACLE_HOME\BIN%;%PATH%

e aí sim vc chama o loader com sqlldr usuario/senha data=nomedoarq

== eu NÂO passei o @hoststring justamente para ser conexão LOCAL, 
sim ?? E é claro, aqui usei a sintaxe de prompt de comandos win, se 
for unix/linux use o correspondente adequado...

[]s

Chiappa




 


-
 Você quer respostas para suas perguntas? Ou você sabe muito e quer 
compartilhar seu conhecimento? Experimente o Yahoo! Respostas!

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



--
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--__

Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine 
__
O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o 
link do mesmo para evitar trafego(pedidos) desnecessário. 
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:
[EMAIL PROTECTED]

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

 




[oracle_br] Re: Ajuda SQL Loader

2006-07-18 Por tôpico jlchiappa
Como eu disse, TER QUE estar no servidor vc não tem, embora isso seja 
ALTAMENTE recomendável por questão de performance. Ocorre que os 
utilitários Oracle ** não são ** obrigatórios de serem instalados nas 
máquinas clientes, é opcional, tranquilamente PODE SER mesmo que 
nessa máquina não esteja instalada, verifique o sub-diretório BIN 
abaixo do diretório oracle_home onde está instalado o software Oracle 
client dessa máquina , se vc não encontrar o executável sqlldr isso 
quer dizer que ele não foi instalado, se vc quiser rodar a partir 
dessa máquina peça pro DBA ou quem quer que esteja com os CDs de 
instalação que te instale ele. É claro, nesse caso vai ser uma 
conexão remota ao banco, então além de tudo vc TEM QUE ter o 
TNSNAMEs.ORA configurado, tem que ter acesso pela rede ao servidor 
Oracle, normal...


[]s

 Chiappa
--- Em oracle_br@yahoogrupos.com.br, Rodrigo Lether [EMAIL PROTECTED] 
escreveu

 No caso eu estou na maquina cliente e quando tento executar o 
SQLLDR no prompt DOS da como se o comando nao existise.

   Sera que eu tenho de estar na maquina servidor ???

   Obrigado,
   Rodrigo
   
 
 jlchiappa [EMAIL PROTECTED] escreveu:
   --- Em oracle_br@yahoogrupos.com.br, Rodrigo Lether 
[EMAIL PROTECTED] 
O comando SQLLDR tenho de utilizar no prompt  ou no sqlplus ???
 
 loader é um programa-executável :
 
 C:\oraclexe\app\oracle\product\10.2.0\server\BINdir *sqlldr*
 O volume na unidade C não tem nome.
 O número de série do volume é 507A-DFA1
 
 Pasta de C:\oraclexe\app\oracle\product\10.2.0\server\BIN
 
 02/02/2006  00:43   450.560 sqlldr.exe
1 arquivo(s)450.560 bytes
0 pasta(s)  5.598.797.824 bytes disponíveis
 
 como tal, ele pode ser executado num prompt de comando, OU via 
shell 
 script/script de comandos do teu SO, OU com a tool de digitação  
 execução de comandos do teu SO (botão iniciar opção executar se for 
 m$win, menu do sistema se for linux), ou similares Vc até pode 
 executar programas externos de dentro do sqlplus, via instrução 
HOST, 
 seria tipo :
 
 SQLhost pathenomedo programaquequero
 
 == MAS o plus tem limitações pra isso, eu prefiro sempre usar a 
 linha de comandos.
 
Preciso setar alguma coisa ???
 
 Bom, primeiro a recomendação para performance ótima é SEMPRE que vc 
 tenha o arquivo-texto, o controlfile e o executável do loader 
locais 
 na MESMA máquina que o banco, evitando tráfego de rede excessivo... 
 Quanto à setar, depende : SE vc só tem o banco de produto Oracle 
 nessa máquina, certamente as vars de home, sid e path já estarão 
 certas, não precisará de nada. Já se vc tiver algum outro produto 
 Oracle, vc provavelmnete VAI ter várias homes (ie, vários 
 diretórios), aí vc precisaria indicar, seria algo do tipo :
 
 C:\SET ORACLE_SID=siddobancoemquestão
 C:\SET ORACLE_HOME=discoepathcompletodooraclehome
 C:\SET PATH=%ORACLE_HOME\BIN%;%PATH%
 
 e aí sim vc chama o loader com sqlldr usuario/senha 
data=nomedoarq
 
 == eu NÂO passei o @hoststring justamente para ser conexão LOCAL, 
 sim ?? E é claro, aqui usei a sintaxe de prompt de comandos win, se 
 for unix/linux use o correspondente adequado...
 
 []s
 
 Chiappa
 
 
 
 
  
 
   
 -
  Você quer respostas para suas perguntas? Ou você sabe muito e quer 
compartilhar seu conhecimento? Experimente o Yahoo! Respostas!
 
 [As partes desta mensagem que não continham texto foram removidas]







--
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--__

Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine 
__
O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o 
link do mesmo para evitar trafego(pedidos) desnecessário. 
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:
[EMAIL PROTECTED]

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

 




Re: [oracle_br] Re: Ajuda SQL Loader

2006-07-18 Por tôpico Rodrigo Lether
Verifique o SQLLDR no BIN e não tem, vou ter de rodar na maquina do servidor.
   
  Obrigado pela Ajuda.
  Rodrigo

jlchiappa [EMAIL PROTECTED] escreveu:
  Como eu disse, TER QUE estar no servidor vc não tem, embora isso seja 
ALTAMENTE recomendável por questão de performance. Ocorre que os 
utilitários Oracle ** não são ** obrigatórios de serem instalados nas 
máquinas clientes, é opcional, tranquilamente PODE SER mesmo que 
nessa máquina não esteja instalada, verifique o sub-diretório BIN 
abaixo do diretório oracle_home onde está instalado o software Oracle 
client dessa máquina , se vc não encontrar o executável sqlldr isso 
quer dizer que ele não foi instalado, se vc quiser rodar a partir 
dessa máquina peça pro DBA ou quem quer que esteja com os CDs de 
instalação que te instale ele. É claro, nesse caso vai ser uma 
conexão remota ao banco, então além de tudo vc TEM QUE ter o 
TNSNAMEs.ORA configurado, tem que ter acesso pela rede ao servidor 
Oracle, normal...


[]s

Chiappa
--- Em oracle_br@yahoogrupos.com.br, Rodrigo Lether [EMAIL PROTECTED] 
escreveu

 No caso eu estou na maquina cliente e quando tento executar o 
SQLLDR no prompt DOS da como se o comando nao existise.

   Sera que eu tenho de estar na maquina servidor ???

   Obrigado,
   Rodrigo
   
 
 jlchiappa [EMAIL PROTECTED] escreveu:
   --- Em oracle_br@yahoogrupos.com.br, Rodrigo Lether 
[EMAIL PROTECTED] 
O comando SQLLDR tenho de utilizar no prompt  ou no sqlplus ???
 
 loader é um programa-executável :
 
 C:\oraclexe\app\oracle\product\10.2.0\server\BINdir *sqlldr*
 O volume na unidade C não tem nome.
 O número de série do volume é 507A-DFA1
 
 Pasta de C:\oraclexe\app\oracle\product\10.2.0\server\BIN
 
 02/02/2006  00:43   450.560 sqlldr.exe
1 arquivo(s)450.560 bytes
0 pasta(s)  5.598.797.824 bytes disponíveis
 
 como tal, ele pode ser executado num prompt de comando, OU via 
shell 
 script/script de comandos do teu SO, OU com a tool de digitação  
 execução de comandos do teu SO (botão iniciar opção executar se for 
 m$win, menu do sistema se for linux), ou similares Vc até pode 
 executar programas externos de dentro do sqlplus, via instrução 
HOST, 
 seria tipo :
 
 SQLhost pathenomedo programaquequero
 
 == MAS o plus tem limitações pra isso, eu prefiro sempre usar a 
 linha de comandos.
 
Preciso setar alguma coisa ???
 
 Bom, primeiro a recomendação para performance ótima é SEMPRE que vc 
 tenha o arquivo-texto, o controlfile e o executável do loader 
locais 
 na MESMA máquina que o banco, evitando tráfego de rede excessivo... 
 Quanto à setar, depende : SE vc só tem o banco de produto Oracle 
 nessa máquina, certamente as vars de home, sid e path já estarão 
 certas, não precisará de nada. Já se vc tiver algum outro produto 
 Oracle, vc provavelmnete VAI ter várias homes (ie, vários 
 diretórios), aí vc precisaria indicar, seria algo do tipo :
 
 C:\SET ORACLE_SID=siddobancoemquestão
 C:\SET ORACLE_HOME=discoepathcompletodooraclehome
 C:\SET PATH=%ORACLE_HOME\BIN%;%PATH%
 
 e aí sim vc chama o loader com sqlldr usuario/senha 
data=nomedoarq
 
 == eu NÂO passei o @hoststring justamente para ser conexão LOCAL, 
 sim ?? E é claro, aqui usei a sintaxe de prompt de comandos win, se 
 for unix/linux use o correspondente adequado...
 
 []s
 
 Chiappa
 
 
 
 
  
 
  
 -
  Você quer respostas para suas perguntas? Ou você sabe muito e quer 
compartilhar seu conhecimento? Experimente o Yahoo! Respostas!
 
 [As partes desta mensagem que não continham texto foram removidas]





 


-
 Você quer respostas para suas perguntas? Ou você sabe muito e quer 
compartilhar seu conhecimento? Experimente o Yahoo! Respostas!

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



--
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--__

Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine 
__
O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o 
link do mesmo para evitar trafego(pedidos) desnecessário. 
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:
[EMAIL PROTECTED]

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