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

SQL计算每日累计消费额 自关联JOIN比较运算符问题求解

SQL累计消费额计算解决方案

首选方案:窗口函数法(适配主流SQL引擎,MySQL8.0+、PostgreSQL、Hive等均支持)

这是计算累计值最简洁高效的方案,直接使用窗口聚合函数即可:

SELECT 
    Date,
    SUM(spend) OVER (ORDER BY Date ASC) AS spent
FROM table_1;

如果需要直接生成目标表table_2,修改为如下语句:

CREATE TABLE table_2 AS
SELECT 
    Date,
    SUM(spend) OVER (ORDER BY Date ASC) AS spent
FROM table_1;

逻辑说明:OVER(ORDER BY Date ASC)指定窗口按日期升序排列,每次求和会包含当前行及之前所有行的spend值,刚好符合截止当日累计的需求

自关联方案修正(适配不支持窗口函数的低版本SQL引擎)

你之前关联逻辑正确但缺少分组聚合步骤,修正后的写法如下:

SELECT 
    b.Date,
    SUM(a.spend) AS spent
FROM table_1 a
LEFT JOIN table_1 b
ON a.Date <= b.Date
GROUP BY b.Date
ORDER BY b.Date ASC;

逻辑说明:关联后每个b.Date会对应所有小于等于它的a.Date的spend记录,分组后对a.spend求和即可得到对应日期的累计消费额

两种方案执行后都会得到你预期的结果:

Datespent
10月16日50
10月17日110
10月18日160
10月19日200
10月20日250

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 10:36:02