[oracle_br] Função Analítica.

2011-08-19 Por tôpico Eduardo Rodrigues
Pessoal,

Trabalho com desenvolvimento PL/SQL e estou precisando fazer uma consulta
que me retorne o valor acumulado de uma campo por data conforme exemplo
abaixo, fiz isso facilmente dentro de um bloco, porém a duvida é teria como
fazer isso usando alguma função analítica?

DATA QTD   ACUMULADO
01/2011 10   10
02/2011 15   25
03/2011 30   55
04/2011 22   77

Obrigado


Eduardo Rodrigues
Analista de Sistemas


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



Re: [oracle_br] Função Analítica.

2011-08-19 Por tôpico Gerson Junior
Não sei se entendi bem, mas se voce quer acumular por data, é só usar um
group by.

select campo_data, count(campo_acumular) from tabela group by campo_data.

Isso vai te dar a quantidade em campo_acumular, para cada data. Se quiser
somar usa o sum, e assim por diante.

Se não entendi a pergunta e estou sendo muito óbvio, me desculpe! E repita a
pargunta.

Abraço.




Gerson S. de Vasconcelos Júnior
OCA DBA - Oracle Certified Associate
Fone: (81) 9816-0236
Msn: gerson.vasconce...@gmail.com
Skype: gersonvjunior
http://www.diaadiaoracle.com.br/


Em 19 de agosto de 2011 15:35, Eduardo Rodrigues oraedua...@gmail.comescreveu:

 **


 Pessoal,

 Trabalho com desenvolvimento PL/SQL e estou precisando fazer uma consulta
 que me retorne o valor acumulado de uma campo por data conforme exemplo
 abaixo, fiz isso facilmente dentro de um bloco, porém a duvida é teria como
 fazer isso usando alguma função analítica?

 DATA QTD ACUMULADO
 01/2011 10 10
 02/2011 15 25
 03/2011 30 55
 04/2011 22 77

 Obrigado

 Eduardo Rodrigues
 Analista de Sistemas

 [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




Re: [oracle_br] Função Analítica.

2011-08-19 Por tôpico Eduardo Rodrigues
Gerson, não seria bem isso, se eu agrupar pelo campo data ele ira me
retornar a soma de cada data, eu preciso que retorne o acumulado dos meses,
partindo do mês 01, como no exemplo: Onde o mês 02 soma o mês 01 e 02, o mês
03 soma o mês 01, 02 e 03 e assim por diante.

Me Desculpe pelas repetições.



Em 19 de agosto de 2011 15:50, Gerson Junior
gerson.vasconce...@gmail.comescreveu:

 Não sei se entendi bem, mas se voce quer acumular por data, é só usar um
 group by.

 select campo_data, count(campo_acumular) from tabela group by campo_data.

 Isso vai te dar a quantidade em campo_acumular, para cada data. Se quiser
 somar usa o sum, e assim por diante.

 Se não entendi a pergunta e estou sendo muito óbvio, me desculpe! E repita
 a
 pargunta.

 Abraço.




 Gerson S. de Vasconcelos Júnior
 OCA DBA - Oracle Certified Associate
 Fone: (81) 9816-0236
 Msn: gerson.vasconce...@gmail.com
 Skype: gersonvjunior
 http://www.diaadiaoracle.com.br/


 Em 19 de agosto de 2011 15:35, Eduardo Rodrigues oraedua...@gmail.com
 escreveu:

  **
  
 
  Pessoal,
 
  Trabalho com desenvolvimento PL/SQL e estou precisando fazer uma consulta
  que me retorne o valor acumulado de uma campo por data conforme exemplo
  abaixo, fiz isso facilmente dentro de um bloco, porém a duvida é teria
 como
  fazer isso usando alguma função analítica?
 
  DATA QTD ACUMULADO
  01/2011 10 10
  02/2011 15 25
  03/2011 30 55
  04/2011 22 77
 
  Obrigado
 
  Eduardo Rodrigues
  Analista de Sistemas
 
  [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





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



RES: [oracle_br] Função Analítica.

2011-08-19 Por tôpico Rejane Cristina Messias Correia
Seria Assim?? 

 

SELECT B.DATA,

   B.VALOR,

   SUM(A.VALOR) 

 

  FROM MOV A,

   MOV B  

 WHERE A.DATA = B.DATA

 

GROUP BY B.DATA, 

 B.VALOR

 

ORDER BY B.DATA;   

 

De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em
nome de Eduardo Rodrigues
Enviada em: sexta-feira, 19 de agosto de 2011 16:02
Para: oracle_br@yahoogrupos.com.br
Assunto: Re: [oracle_br] Função Analítica.

 

  

Gerson, não seria bem isso, se eu agrupar pelo campo data ele ira me
retornar a soma de cada data, eu preciso que retorne o acumulado dos meses,
partindo do mês 01, como no exemplo: Onde o mês 02 soma o mês 01 e 02, o mês
03 soma o mês 01, 02 e 03 e assim por diante.

Me Desculpe pelas repetições.

Em 19 de agosto de 2011 15:50, Gerson Junior
gerson.vasconce...@gmail.com mailto:gerson.vasconcelos%40gmail.com
escreveu:

 Não sei se entendi bem, mas se voce quer acumular por data, é só usar um
 group by.

 select campo_data, count(campo_acumular) from tabela group by campo_data.

 Isso vai te dar a quantidade em campo_acumular, para cada data. Se quiser
 somar usa o sum, e assim por diante.

 Se não entendi a pergunta e estou sendo muito óbvio, me desculpe! E repita
 a
 pargunta.

 Abraço.




 Gerson S. de Vasconcelos Júnior
 OCA DBA - Oracle Certified Associate
 Fone: (81) 9816-0236
 Msn: gerson.vasconce...@gmail.com mailto:gerson.vasconcelos%40gmail.com 
 Skype: gersonvjunior
 http://www.diaadiaoracle.com.br/


 Em 19 de agosto de 2011 15:35, Eduardo Rodrigues oraedua...@gmail.com
mailto:oraeduardo%40gmail.com 
 escreveu:

  **
 
 
  Pessoal,
 
  Trabalho com desenvolvimento PL/SQL e estou precisando fazer uma
consulta
  que me retorne o valor acumulado de uma campo por data conforme exemplo
  abaixo, fiz isso facilmente dentro de um bloco, porém a duvida é teria
 como
  fazer isso usando alguma função analítica?
 
  DATA QTD ACUMULADO
  01/2011 10 10
  02/2011 15 25
  03/2011 30 55
  04/2011 22 77
 
  Obrigado
 
  Eduardo Rodrigues
  Analista de Sistemas
 
  [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




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



 
---
 
Mensagem verificada pelo AntiSpam Alto Alegre.


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



Re: [oracle_br] Função Analítica.

2011-08-19 Por tôpico Eduardo Rodrigues
Isso mesmo Rejane! Deu certo

*

select b.data, b.uf, b.ref_lm, b.qtd, sum(a.qtd) qtd
from tabela a, tabela b
where a.ref_lm = b.ref_lm
and a.uf = b.uf
and a.data = b.data
and a.ref_lm = 58859521
group by b.data, b.uf, b.ref_lm, b.qtd
order by b.data

01/01/2010 DF 58859521 3,00  3,00
01/02/2010 DF 58859521 1,00  4,00
01/03/2010 DF 58859521 3,00  7,00
01/04/2010 DF 58859521 1,00  8,00
01/05/2010 DF 58859521 1,00  9,00
01/04/2010 SP 58859521 2,00  2,00
01/05/2010 SP 58859521 1,00  3,00
01/06/2010 SP 58859521 3,00  6,00
01/01/2011 SP 58859521 3,00  9,00*

Muito Obrigado.
Em 19 de agosto de 2011 16:06, Rejane Cristina Messias Correia 
rejane.corr...@altoalegre.com.br escreveu:

 **


 Seria Assim??

 SELECT B.DATA,

 B.VALOR,

 SUM(A.VALOR)

 FROM MOV A,

 MOV B

 WHERE A.DATA = B.DATA

 GROUP BY B.DATA,

 B.VALOR

 ORDER BY B.DATA;

 De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em
 nome de Eduardo Rodrigues
 Enviada em: sexta-feira, 19 de agosto de 2011 16:02
 Para: oracle_br@yahoogrupos.com.br
 Assunto: Re: [oracle_br] Função Analítica.


 Gerson, não seria bem isso, se eu agrupar pelo campo data ele ira me
 retornar a soma de cada data, eu preciso que retorne o acumulado dos meses,
 partindo do mês 01, como no exemplo: Onde o mês 02 soma o mês 01 e 02, o
 mês
 03 soma o mês 01, 02 e 03 e assim por diante.

 Me Desculpe pelas repetições.

 Em 19 de agosto de 2011 15:50, Gerson Junior
 gerson.vasconce...@gmail.com mailto:gerson.vasconcelos%40gmail.com

 escreveu:

  Não sei se entendi bem, mas se voce quer acumular por data, é só usar um
  group by.
 
  select campo_data, count(campo_acumular) from tabela group by campo_data.
 
  Isso vai te dar a quantidade em campo_acumular, para cada data. Se quiser
  somar usa o sum, e assim por diante.
 
  Se não entendi a pergunta e estou sendo muito óbvio, me desculpe! E
 repita
  a
  pargunta.
 
  Abraço.
 
 
 
 
  Gerson S. de Vasconcelos Júnior
  OCA DBA - Oracle Certified Associate
  Fone: (81) 9816-0236
  Msn: gerson.vasconce...@gmail.com mailto:gerson.vasconcelos%40gmail.com

  Skype: gersonvjunior
  http://www.diaadiaoracle.com.br/
 
 
  Em 19 de agosto de 2011 15:35, Eduardo Rodrigues oraedua...@gmail.com
 mailto:oraeduardo%40gmail.com
   escreveu:
 
   **
  
  
   Pessoal,
  
   Trabalho com desenvolvimento PL/SQL e estou precisando fazer uma
 consulta
   que me retorne o valor acumulado de uma campo por data conforme exemplo
   abaixo, fiz isso facilmente dentro de um bloco, porém a duvida é teria
  como
   fazer isso usando alguma função analítica?
  
   DATA QTD ACUMULADO
   01/2011 10 10
   02/2011 15 25
   03/2011 30 55
   04/2011 22 77
  
   Obrigado
  
   Eduardo Rodrigues
   Analista de Sistemas
  
   [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
 
 
 

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

 ---

 Mensagem verificada pelo AntiSpam Alto Alegre.


 [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




Re: RES: [oracle_br] Função Analítica.

2011-08-19 Por tôpico Sérgio Luiz Rodrigues Chaves
Dando uma busca rapida no google. 

Seja se é isso o que voê quer 


SUM(y) OVER(ORDER BY x ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) 


SQL create table TestTable ( 
2 x number primary key, 
3 y number 
4 ) ; 

Table created. 

SQL insert into TestTable values ( 1 , 7 ) ; 

1 row created. 

SQL insert into TestTable values ( 2 , 1 ) ; 

1 row created. 

SQL insert into TestTable values ( 3 , 2 ) ; 

1 row created. 

SQL insert into TestTable values ( 4 , 5 ) ; 

1 row created. 

SQL insert into TestTable values ( 5 , 7 ) ; 

1 row created. 

SQL insert into TestTable values ( 6 , 34 ) ; 

1 row created. 

SQL insert into TestTable values ( 7 , 32 ) ; 

1 row created. 

SQL insert into TestTable values ( 8 , 43 ) ; 

1 row created. 

SQL insert into TestTable values ( 9 , 87 ) ; 

1 row created. 

SQL insert into TestTable values ( 10 , 32 ) ; 

1 row created. 

SQL insert into TestTable values ( 11 , 12 ) ; 

1 row created. 

SQL insert into TestTable values ( 12 , 16 ) ; 

1 row created. 

SQL insert into TestTable values ( 13 , 63 ) ; 

1 row created. 

SQL insert into TestTable values ( 14 , 74 ) ; 

1 row created. 

SQL insert into TestTable values ( 15 , 36 ) ; 

1 row created. 

SQL insert into TestTable values ( 16 , 56 ) ; 

1 row created. 

SQL insert into TestTable values ( 17 , 2 ) ; 

1 row created. 

SQL 
SQL select * from TestTable; 

X Y 
-- -- 
1 7 
2 1 
3 2 
4 5 
5 7 
6 34 
7 32 
8 43 
9 87 
10 32 
11 12 
12 16 
13 63 
14 74 
15 36 
16 56 
17 2 

17 rows selected. 

SQL 
SQL 
SQL 
SQL COLUMN ma FORMAT 99.999 
SQL COLUMN sum LIKE ma 
SQL COLUMN sum/3 LIKE ma 
SQL 
SQL SELECT x, y, 
2 AVG ( y ) OVER ( ORDER BY x 
3 ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING ) ma, 
4 SUM ( y ) OVER ( ORDER BY x 
5 ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING ) sum, 
6 ( SUM ( y ) OVER ( ORDER BY y 
7 ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING )) / 3 Sum/3 
8 FROM TestTable 
9 ORDER BY x; 

X Y MA SUM Sum/ 3 
-- -- --- --- --- 
1 7 4.000 8.000 6.333 
2 1 3.333 10.000 1.000 
3 2 2.667 8.000 1.667 
4 5 4.667 14.000 4.667 
5 7 15.333 46.000 8.667 
6 34 24.333 73.000 34.000 
7 32 36.333 ### 26.667 
8 43 54.000 ### 45.000 
9 87 54.000 ### 53.667 
10 32 43.667 ### 32.667 
11 12 20.000 60.000 11.667 
12 16 30.333 91.000 20.000 
13 63 51.000 ### 64.333 
14 74 57.667 ### 74.667 
15 36 55.333 ### 37.667 
16 56 31.333 94.000 54.000 
17 2 29.000 58.000 3.000 

17 rows selected. 

SQL 
SQL COLUMN ma FORMAT 99.999 
SQL COLUMN sum LIKE ma 
SQL COLUMN sum/3 LIKE ma 
SQL 
SQL 
SQL SELECT x, y, 
2 AVG ( y ) OVER ( ORDER BY x 
3 ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING ) ma, 
4 SUM ( y ) OVER ( ORDER BY x 
5 ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING ) sum, 
6 ( SUM ( y ) OVER ( ORDER BY y 
7 ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING )) / 3 Sum/3 
8 FROM TestTable 
9 ORDER BY x; 

X Y MA SUM Sum/ 3 
-- -- --- --- --- 
1 7 4.000 8.000 6.333 
2 1 3.333 10.000 1.000 
3 2 2.667 8.000 1.667 
4 5 4.667 14.000 4.667 
5 7 15.333 46.000 8.667 
6 34 24.333 73.000 34.000 
7 32 36.333 109.000 26.667 
8 43 54.000 162.000 45.000 
9 87 54.000 162.000 53.667 
10 32 43.667 131.000 32.667 
11 12 20.000 60.000 11.667 
12 16 30.333 91.000 20.000 
13 63 51.000 153.000 64.333 
14 74 57.667 173.000 74.667 
15 36 55.333 166.000 37.667 
16 56 31.333 94.000 54.000 
17 2 29.000 58.000 3.000 

17 rows selected. 

SQL 
SQL drop table TestTable; 

Table dropped. 

SQL 






Atenciosamente, Sérgio Chaves. 








- Mensagem original - 
De: Rejane Cristina Messias Correia rejane.corr...@altoalegre.com.br 
Para: oracle br oracle_br@yahoogrupos.com.br 
Enviadas: Sexta-feira, 19 de Agosto de 2011 16:06:53 (GMT-0300) Auto-Detected 
Assunto: RES: [oracle_br] Função Analítica. 






Seria Assim?? 

SELECT B.DATA, 

B.VALOR, 

SUM(A.VALOR) 

FROM MOV A, 

MOV B 

WHERE A.DATA = B.DATA 

GROUP BY B.DATA, 

B.VALOR 

ORDER BY B.DATA; 

De: oracle_br@yahoogrupos.com.br [mailto: oracle_br@yahoogrupos.com.br ] Em 
nome de Eduardo Rodrigues 
Enviada em: sexta-feira, 19 de agosto de 2011 16:02 
Para: oracle_br@yahoogrupos.com.br 
Assunto: Re: [oracle_br] Função Analítica. 

Gerson, não seria bem isso, se eu agrupar pelo campo data ele ira me 
retornar a soma de cada data, eu preciso que retorne o acumulado dos meses, 
partindo do mês 01, como no exemplo: Onde o mês 02 soma o mês 01 e 02, o mês 
03 soma o mês 01, 02 e 03 e assim por diante. 

Me Desculpe pelas repetições. 

Em 19 de agosto de 2011 15:50, Gerson Junior 
 gerson.vasconce...@gmail.com mailto:gerson.vasconcelos%40gmail.com 
escreveu: 

 Não sei se entendi bem, mas se voce quer acumular por data, é só usar um 
 group by. 
 
 select campo_data, count(campo_acumular) from tabela group by campo_data. 
 
 Isso vai te dar a quantidade em campo_acumular, para cada data. Se quiser 
 somar usa o sum, e assim por diante. 
 
 Se não entendi a pergunta e estou sendo muito óbvio, me desculpe! E repita