当前位置:网站首页>Accumulate SQL by date

Accumulate SQL by date

2022-07-23 11:41:00 AA master Zhao

Sample data :

uid,dt,cnt
guid01,2018-02-28,1
guid01,2018-03-01,2
guid01,2018-03-02,2
guid01,2018-03-04,0
guid01,2018-03-05,0
guid01,2018-03-06,2
guid01,2018-03-07,3
guid02,2018-03-01,4
guid02,2018-03-02,1
guid02,2018-03-03,0
guid02,2018-03-06,2

The result requires : Accumulate the user's daily amount , The effect is as follows :

guid01,2018-02-28,1
guid01,2018-03-01,3
guid01,2018-03-02,5
guid01,2018-03-04,5
guid01,2018-03-05,5
guid01,2018-03-06,7

sql as follows :

SELECT t1.uid
	,t1.dt
	,t1.cnt
	,sum(t2.cnt) (
		SELECT uid
			,dt
			,cnt
			,row_number() OVER (
				PARTITION BY uid ORDER BY dt
				) rn
		FROM user_order
		) t1
JOIN (
	SELECT uid
		,dt
		,cnt
		,row_number() OVER (
			PARTITION BY uid ORDER BY dt
			) rn
	FROM user_order
	) t2 ON t1.uid = t2.uid
	AND t1.rn >= t2.rn
GROUP BY t1.uid
	,t1.dt
	,t1.cnt
ORDER BY t1.dt;

Or use sum() over() function :

SELECT uid
	,dt
	,cnt
	,sum(cnt) OVER (
		PARTITION BY uid ORDER BY dt
		) total_cnt
FROM user_order

 

原网站

版权声明
本文为[AA master Zhao]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/204/202207230538311201.html