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