sql 同一张表不同日期比较_sql-累计GMV计算大法 2020-07-16

c609bb7d1f747dc2d6bc4a48e2fd563e.png

近一周数据需求较多且繁杂,难以合理抽象为知识。2020-07-16

GMV:Gross Merchandise Volume,是成交总额(一定时间段内)的意思。多用于电商行业,一般包含拍下未支付订单金额。

累计值计算sql

今天总结下累计值的计算方法,例如以日期维度聚合的,计算统计日开始所有用户的7日累计GMV为例。

表revenue中包含日期dt,用户id,用户的各类消费简化为一个gmv,三个字段。

核心思路是用同一张表进行自连接。

--7日累计GMV计算
select k1.dt
--k1.user_id
,sum(case when distinct k1.user_id then k1.gmv end) as 当日gmv
,sum(k2.gmv) as 累计gmv
from 
(
select dt,user_id,gmv
from revenue
)k1
left join 
(
select dt,user_id,gmv 
from revenue 
) k2 on k1.user_id=k2.user_id and k1.dt>=datesub(k2.dt,7) and k1.dt<=k2.dt 
group by k1.dt --k1.user_id

关键在于匹配条件的一对多条件,将统计日至统计日+7之间的数据均与统计日匹配,会使得整个表膨胀,因此在计算当日gmv时不能简单sum(k1.gmv),而要sum(casewhendistinct k1.user_id then k1.gmv end)去重。

应该也可以使用窗口函数实现,明日研究后补充。

分析较宏观指标变动的大致思路

外部:竞对动向,社会热点,政策管制等

内部:产品时间周期性变动,运营活动周期,数据准确性,指标口径变动等

详细拆解:多维度细拆解,将指标分为可衡量的细指标相乘,尝试多种维度。

积累一个不错的文章:

Lotus:数分面试-SQL篇​zhuanlan.zhihu.com
51c4f722eb4816b8fced226a0b58296c.png
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值