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

如何获取数据库近20年每4天周期的数值总和最大值?求新SQL查询

获取过去20年每4天周期数值总和最大值的有效SQL

原提供的查询仅实现了单日分组并筛选单日记录数≥4的情况,并未达成每4天周期数值总和的计算目标。以下是符合需求的替代查询(基于PostgreSQL语法):

WITH daily_agg AS (
    -- 先按天聚合每日数值总和
    SELECT
        DATE_TRUNC('day', date) AS day_date,
        SUM(value) AS daily_total
    FROM your_table
    WHERE date >= NOW() - INTERVAL '20 years'
    GROUP BY DATE_TRUNC('day', date)
),
four_day_sums AS (
    -- 计算连续4天的滚动总和
    SELECT
        day_date AS window_start,
        day_date + INTERVAL '3 days' AS window_end,
        SUM(daily_total) OVER (
            ORDER BY day_date
            ROWS BETWEEN CURRENT ROW AND 3 FOLLOWING
        ) AS four_day_total
    FROM daily_agg
)
-- 筛选出完整4天周期的最大值
SELECT window_start, window_end, four_day_total
FROM four_day_sums
WHERE four_day_total IS NOT NULL
ORDER BY four_day_total DESC
LIMIT 1;

逻辑说明:

  1. daily_agg CTE:先将原始数据按天聚合,得到每天的数值总和,确保数据粒度统一为单日。
  2. four_day_sums CTE:使用窗口函数SUM() OVER(),按日期排序后计算当前日期及后续3天的总和,生成连续4天的周期总和。
  3. 最终查询:过滤掉最后几天不足4天的不完整周期,按4天总和降序排列后取第一行,即为过去20年中每4天周期数值总和的最大值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 13:22:52