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

存在重复日期的数据表计算历史累计平均值与每日条目数SQL问题

实现方案

你已经完成的按日期分组统计单日条目数的逻辑是核心基础,我们在此基础上补充累计平均值的计算即可,以下提供两种兼容不同数据库版本的写法:

方案1:支持窗口函数的主流数据库(MySQL 8.0+、PostgreSQL、SQLite 3.25+ 等,优先推荐)

利用窗口函数的累加特性直接计算,性能高写法简洁:

SELECT
    date,
    -- 累计所有历史value总和 / 累计所有历史记录条数 = 截止当前日期的历史平均值
    SUM(daily_value_sum) OVER (ORDER BY date) / SUM(daily_record_count) OVER (ORDER BY date) AS avg,
    daily_record_count AS count
FROM (
    -- 内层先按日期分组,计算单日的value总和、单日记录条数
    SELECT
        date,
        SUM(value) AS daily_value_sum,
        COUNT(*) AS daily_record_count
    FROM table_name
    GROUP BY date
    ORDER BY date
) t;

方案2:不支持窗口函数的低版本数据库兼容写法

用自关联实现累计计算,结果和方案1完全一致:

SELECT
    t1.date,
    SUM(t2.daily_value_sum) / SUM(t2.daily_record_count) AS avg,
    t1.daily_record_count AS count
FROM (
    SELECT date, SUM(value) AS daily_value_sum, COUNT(*) AS daily_record_count
    FROM table_name GROUP BY date
) t1
-- 关联所有小于等于当前日期的分组数据,累加得到历史总和
JOIN (
    SELECT date, SUM(value) AS daily_value_sum, COUNT(*) AS daily_record_count
    FROM table_name GROUP BY date
) t2 ON t2.date <= t1.date
GROUP BY t1.date, t1.daily_record_count
ORDER BY t1.date;

两种写法输出的结果和你给出的预期示例完全匹配,可直接用于后续gnuplot绘图。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 16:45:04