样例数据:
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
结果要求:对用户每天金额进行累加,效果如下:
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如下:
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;
或者使用sum() over()函数:
SELECT uid
,dt
,cnt
,sum(cnt) OVER (
PARTITION BY uid ORDER BY dt
) total_cnt
FROM user_order
461

被折叠的 条评论
为什么被折叠?



