Oracle SQL Analytic有序分组

时间:2018-02-08 18:14:12

标签: sql oracle

我将大部分应用程序细节都放在一边,让事情变得简单。 这是我的开始以及我需要去的地方。例如,我已经使用LEAD / LAG函数和内部SQL尝试了很多很多东西,但是如果没有编写过程代码,我似乎没有达到目的。这是问题所在:

鉴于此:

with some_data as (select 1 seqnc, to_date('12-06-2018','dd-mm-yyyy') date_deb, 2 qte_min from dual union
                   select 1 seqnc, to_date('13-06-2018','dd-mm-yyyy'), 2 from dual union
                   select 1 seqnc, to_date('14-06-2018','dd-mm-yyyy'), 2 from dual union
                   select 1 seqnc, to_date('15-06-2018','dd-mm-yyyy'), 4 from dual union
                   select 1 seqnc, to_date('16-06-2018','dd-mm-yyyy'), 4 from dual union
                   select 1 seqnc, to_date('17-06-2018','dd-mm-yyyy'), 2 from dual union
                   select 1 seqnc, to_date('18-06-2018','dd-mm-yyyy'), 2 from dual union
                   select 1 seqnc, to_date('19-06-2018','dd-mm-yyyy'), 2 from dual union
                   select 1 seqnc, to_date('20-06-2018','dd-mm-yyyy'), 2 from dual)
select * from some_data;

日期总是连续的。我需要得到qte_min的相同值,这些值按连续日期分组(不是所有相同值的组)。 我需要最终得到类似的东西:

date_deb   qte_min   nbre_jrs
12-06-2018      2           3
15-06-2018      4           2
17-06-2018      2           4

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您可以使用不同的行号和日期来定义组:

select seqnc, min(date_db), max(date_db), min(qte_min), count(*)
from (select sd.*,
             row_number() over (partition by seqnc order be date_db) as seqnum_d
      from some_data sd
     ) sd
group by seqnc, (date_db - seqnum_d)
相关问题