近一周数据需求较多且繁杂,难以合理抽象为知识。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