[oracle_br] Função Analítica.
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.
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.
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.
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.
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.
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