具有动态时间范围的PL / SQL每周聚合逻辑

时间:2016-11-29 12:27:41

标签: oracle plsql

我需要按周间隔聚合值。我的日期范围是动态的,我可以给出任何开始日期和结束日期。每个星期天应该是每个月的开始周。如果我有两列,我的开始和结束日期是2016年11月7日至2016年11月13日

       column A                            column B
     07/11/2016                              23
     08/11/2016                              20
     09/11/2016                              10
     10/11/2016                              05
     11/11/2016                              10
     12/11/2016                              20
     13/11/2016                              10

我的结果应该像取B列的平均值

  Column A                       Column B
 13/11/2016                       14.00

这意味着我应该考虑过去的价值并将其汇总到那周的那个星期日。此外,如果我的开始和结束日期类似于2016年11月7日至2016年11月10日,那么我不应该汇总该值,因为我的周未完成。我能够聚合这些值,但如果我的周没有完成,我就无法限制聚合。 有没有办法在PL / SQL中执行此操作?

提前谢谢。

1 个答案:

答案 0 :(得分:0)

select to_char(columnA, 'iw') as weeknumber, avg(columnB) 
  from table 
  group by to_char(columnA, 'iw');

这将按周数汇总。如果您需要将星期的最后一天显示为标签,则可以将其显示为max(columnA) over (partition by to_char(columnA, 'iw'))