You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle BI中按30天分组统计90天区间计数并分列输出方法

Oracle BI场景下90天按30天粒度分组统计方案

核心采用条件聚合逻辑实现,不需要额外生成临时日期表,查询性能稳定,可直接适配Oracle BI的物理层、逻辑层查询,输出结果会按x、y维度分组,每个30天区间的计数值作为独立列返回。

区间划分规则

以指定的统计起始日2022-02-20为基准,将90天范围拆分为3个连续30天的独立统计周期:

  • 周期1(第1-30天):2022-02-20 至 2022-03-21
  • 周期2(第31-60天):2022-03-22 至 2022-04-20
  • 周期3(第61-90天):2022-04-21 至 2022-05-20

可直接复用的SQL代码

基于你提供的基础查询修改,兼容Oracle语法:

SELECT 
  x,
  y,
  -- 第1个30天周期计数
  COUNT(CASE WHEN date_col >= TO_DATE('2022-02-20','YYYY-MM-DD') 
              AND date_col < TO_DATE('2022-02-20','YYYY-MM-DD') + 30 
        THEN y END) AS cnt_period_1,
  -- 第2个30天周期计数
  COUNT(CASE WHEN date_col >= TO_DATE('2022-02-20','YYYY-MM-DD') + 30 
              AND date_col < TO_DATE('2022-02-20','YYYY-MM-DD') + 60 
        THEN y END) AS cnt_period_2,
  -- 第3个30天周期计数
  COUNT(CASE WHEN date_col >= TO_DATE('2022-02-20','YYYY-MM-DD') + 60 
              AND date_col <= TO_DATE('2022-05-20','YYYY-MM-DD')
        THEN y END) AS cnt_period_3
FROM tbl
WHERE date_col BETWEEN TO_DATE('2022-02-20','YYYY-MM-DD') AND TO_DATE('2022-05-20','YYYY-MM-DD')
GROUP BY x, y

适配说明

  • 如果你的日期字段是数值型存储的YYYYMMDD格式,只需要把判断条件里的date_col替换为TO_DATE(TO_CHAR(date_col),'YYYYMMDD')即可,不要直接对数值型日期加天数,避免跨月时数值计算错误。
  • 如果后续需要调整统计周期长度、起止时间,只需要修改CASE语句里的偏移天数、WHERE条件里的起止日期即可,不需要改动整体查询结构。
  • 该写法相比PIVOT、关联日期维表的方案性能更高,BI工具拉取报表时不会出现维度膨胀、计数重复的问题。

内容的提问来源于stack exchange,提问作者waithira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 12:03:49