Mária,

Deste jeito que você postou também funciona. O problema é que você acaba lendo 
a tabela duas vezes, o que não é legal do ponto de vista de performance. As 
funções analíticas servem justamente pra referenciar outras linhas da query sem 
a necessidade de ler duas vezes a mesma tabela.

[]s

Eduardo Claro


-----Original Message-----
From: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] On Behalf Of Mária 
Cristina Silva
Sent: terça-feira, 30 de setembro de 2008 16:29
To: oracle_br@yahoogrupos.com.br
Subject: Re: [oracle_br] Select Acumulativo

bom pode tentar adaptar o a consulta abaixo, veja se te atende.


*select* b.salary, *sum*(b.salary) *as* soma, *sum*(a.salary) *as* cum_sal2
*from* employee a, employee b
*where* a.*rowid* <= b.*rowid*
*group* *by* b.*rowid*, b.salary
*order* *by* b.*rowid

*

Abraços,


2008/9/30 Claro, Eduardo <[EMAIL PROTECTED]>

>   Utilize uma função analítica. Veja o exemplo, em que eu usei a função
> LAG (pega o dado da linha anterior):
>
> drop table vendas;
> create table vendas (data date, valor number);
> begin
> for i in 1..50 loop
> insert into vendas values
> (trunc(sysdate-(i*30/10)),trunc(dbms_random.value(1,100)));
> end loop;
> end;
> /
> commit;
>
> alter session set nls_date_format='MON';
> select trunc(data,'MON') mes, sum(valor) soma_normal, sum(valor) + nvl(
> lag(sum(valor)) over(order by trunc(data,'MON')) , 0) ACUMULADO
> from vendas
> group by trunc(data,'MON')
> order by trunc(data,'MON');
>
> MES SOMA_NORMAL ACUMULADO
> --- ----------- ---------
> MAI 527 527
> JUN 430 957
> JUL 491 921
> AGO 516 1007
> SET 518 1034
>
> []s
>
> Eduardo Claro
>
>
> -----Original Message-----
> From: oracle_br@yahoogrupos.com.br <oracle_br%40yahoogrupos.com.br>[mailto:
> oracle_br@yahoogrupos.com.br <oracle_br%40yahoogrupos.com.br>] On Behalf
> Of Luis Eduardo Trovo
> Sent: terça-feira, 30 de setembro de 2008 15:24
> To: oracle_br@yahoogrupos.com.br <oracle_br%40yahoogrupos.com.br>
> Subject: [oracle_br] Select Acumulativo
>
> Pessoal, boa tarde!
>
> Existe alguma função ou alguma lógica para fazer um campo acumulativo em um
> Select? Por exemplo:
>
> Select Mes, Sum(Valor) Soma
> from Vendas
> Group by Mes
> Order by Mes;
>
> Mes Soma
> Jan 10
> Fev 12
> Mar 10
> Abr 15
>
> Existe como criar uma coluna que acumula os valores do campo Soma neste
> Select?
> O resultado esperado deveria ficar da seguinte forma:
>
> Mes Soma Acumulado
> Jan 10 10
> Fev 12 22
> Mar 10 32
> Abr 15 47
>
> Alguém tem alguma idéia de resolver isso sem ter que partir para um bloco
> PL/Sql? Resolver pelo próprio Select?
>
> Obrigado.
> Luís.
>
> ------------------------------------
>
> ----------------------------------------------------------
> >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/
> ----------------------------------------------------------
> >Funções, Procedures, propostas de emprego - O GRUPO ORACLE_BR TEM SEU
> PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/
> ---------------------------------------------------------- Links do Yahoo!
> Grupos
>
> 
>



-- 
Abraços,
Mária Cristina
Cel: 031-8883-5543
E-mail: [EMAIL PROTECTED]
MSN:   [EMAIL PROTECTED]
-- 
"O começo é a parte mais importante do trabalho."
- Platão


[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/ 
--------------------------------------------------------------------------------------------------------------------------
>Funções, Procedures, propostas de emprego - O GRUPO ORACLE_BR TEM SEU PROPRIO 
>ESPAÇO! VISITE: http://www.oraclebr.com.br/  
------------------------------------------------------------------------------------------------------------------------
 Links do Yahoo! Grupos


Responder a