*Ricardo, talvez você possa trabalhar com lag e lead pra separar os agrupamentos. Segue um exemplo pra te dar uma idéia:*
with tabela as ( select 1 numero, to_date('20140901','YYYYMMDD') data, 10 valor, 'N' flag from dual union all select 2 numero, to_date('20140901','YYYYMMDD') data, 15 valor, 'N' flag from dual union all select 3 numero, to_date('20140901','YYYYMMDD') data, 10 valor, 'N' flag from dual union all select 4 numero, to_date('20140901','YYYYMMDD') data, 10 valor, 'N' flag from dual union all select 5 numero, to_date('20140901','YYYYMMDD') data, 10 valor, 'N' flag from dual union all select 6 numero, to_date('20140901','YYYYMMDD') data, 10 valor, 'S' flag from dual union all select 7 numero, to_date('20140901','YYYYMMDD') data, 10 valor, 'S' flag from dual union all select 8 numero, to_date('20140901','YYYYMMDD') data, 10 valor, 'N' flag from dual union all select 9 numero, to_date('20140901','YYYYMMDD') data, 10 valor, 'S' flag from dual union all select 10 numero, to_date('20140901','YYYYMMDD') data, 10 valor, 'N' flag from dual union all select 11 numero, to_date('20140901','YYYYMMDD') data, 10 valor, 'N' flag from dual union all select 12 numero, to_date('20140901','YYYYMMDD') data, 10 valor, 'N' flag from dual union all select 13 numero, to_date('20140902','YYYYMMDD') data, 10 valor, 'N' flag from dual union all select 14 numero, to_date('20140902','YYYYMMDD') data, 10 valor, 'N' flag from dual union all select 15 numero, to_date('20140902','YYYYMMDD') data, 10 valor, 'N' flag from dual ) , tabela_2 as ( select to_char(data,'YYYYMMDD') || flag chave, lead(to_char(data,'YYYYMMDD') || flag,1) over (order by numero) chave_2, numero, data, valor, flag from tabela ), tabela_3 as ( select t.* from tabela_2 t where chave != chave_2 or chave_2 is null order by numero ), tabela_4 as ( select t.numero, min(t.data) data, min(t.valor) valor, min(t.flag) flag, min(t3.numero) agrupador from tabela t join tabela_3 t3 on t.data = t3.data and t.flag = t3.flag and t.numero <= t3.numero group by t.numero order by t.numero ) select data, min(numero) || ' | ' || max(numero) intervalo, flag, sum(valor) total from tabela_4 group by data, flag, agrupador order by agrupador *Entendo que para um volume grande de informações essa pode não ser a melhor solução, mas pelo menos pode te ajudar a ter alguma idéia.* Ricardo Hideyuki Tajiri Em 15 de setembro de 2014 11:24, Ricardo Monteiro ricardolgmonte...@yahoo.com.br [oracle_br] <oracle_br@yahoogrupos.com.br> escreveu: > > > Olá Enderson, > > Obrigado pelo retorno. > Realmente não houve resposta. > É bem parecida com a ideia de quartil, só que não consigo definir quantos > quartis eu terei. Precisaria fazer alguns testes com valores grandes para > ver o que acontece. O universo de dados que tenho para trabalhar > mensalmente são em torno 120 milhões de linhas em média. Por isso a > necessidade de fazer agrupamento como mencionei no primeiro e-mail. > > Abs > Ricardo > > > Em Segunda-feira, 15 de Setembro de 2014 11:08, " > ederson200...@yahoo.com.br [oracle_br]" <oracle_br@yahoogrupos.com.br> > escreveu: > > > > Ricardo, > > Vi que ainda não houve uma resposta sob medida para o seu problema. > > Pelo que entendi, vc está precisando de uma operação de QUARTIL, entendi > correto? > > Sendo isto, a função é NTILE, veja exemplo: > > > http://www.techhoney.com/oracle/function/ntile-function-in-oracle-sql-plsql/ > > > Ederson Elias > DBA Oracle - http://br.linkedin.com/pub/ederson-elias/24/8b/8b0 > ------------ Labor improbus omnia vincit > > > >