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

Oracle数据库如何统计过去4周内表中每周新增的记录数量

Oracle实现过去4周每周新增记录统计SQL

核心逻辑是将TIMESTAMP字段按周截断,过滤近28天数据后按周分组,再给周分配1~4的序号即可匹配需求输出。

基础实现(仅统计有数据的周)

SELECT
  COUNT(*) AS numofrows,
  DENSE_RANK() OVER(ORDER BY TRUNC("TIMESTAMP", 'IW')) AS week
FROM tab
WHERE "TIMESTAMP" >= SYSDATE - INTERVAL '28' DAY
GROUP BY TRUNC("TIMESTAMP", 'IW')
ORDER BY week;

参数说明:

  • IW为ISO周标准,每周从周一开始计算,若业务周从周日起始,替换为DAY即可
  • TIMESTAMP是Oracle内置关键字,因此用双引号包裹避免语法报错

补零实现(无数据的周也显示0条记录)

如果需要补齐没有数据的周,使用CTE生成连续4周的时间区间再左关联业务表即可:

WITH weeks AS (
  SELECT
    TRUNC(SYSDATE - (LEVEL-1)*7, 'IW') AS week_start,
    5 - LEVEL AS week
  FROM dual
  CONNECT BY LEVEL <= 4
)
SELECT
  COUNT(t."TIMESTAMP") AS numofrows,
  w.week
FROM weeks w
LEFT JOIN tab t
  ON TRUNC(t."TIMESTAMP", 'IW') = w.week_start
  AND t."TIMESTAMP" >= SYSDATE - INTERVAL '28' DAY
GROUP BY w.week
ORDER BY w.week;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 05:54:03