目录
0 需求描述
1 数据准备
2 问题分析
3 小结
如果觉得本文对你有帮助,想进一步学习SQL语言这门艺术的,那么不妨也可以选择去看看我的博客专栏 ,部分内容如下:
数字化建设通关指南
专栏 原价99,现在活动价59.9,按照阶梯式增长,直到恢复原价。
0 需求描述
sql"> 我们有如下的用户访问数据userId visitDate visitCountu01 2017/1/21 5u02 2017/1/23 6u03 2017/1/22 8u04 2017/1/20 3u01 2017/1/23 6u01 2017/2/21 8U02 2017/1/23 6U01 2017/2/22 4要求使用SQL统计出每个用户的累积访问次数,如下表所示:用户id 月份 小计 累积u01 2017-01 11 11u01 2017-02 12 23u02 2017-01 12 12u03 2017-01 8 8u04 2017-01 3 3
1 数据准备
sql">create table visit as(select stack (8,'u01', '2017/1/21', 5 ,'u02', '2017/1/23', 6 ,'u03', '2017/1/22', 8 ,'u04', '2017/1/20', 3 ,'u01', '2017/1/23', 6 ,'u01', '2017/2/21', 8 ,'u02', '2017/1/23', 6 ,'u01', '2017/2/22', 4) as(user_id,visit_time,visit_cnt));
2 问题分析
第一步:求出每个用户每月的访问次数
sql">select user_id, date_format(regexp_replace(visit_time, '/', '-'), 'yyyy-MM') year_month, sum(visit_cnt) visit_cnt
from visit
group by user_id, date_format(regexp_replace(visit_time, '/', '-'), 'yyyy-MM')
第二步:利用分析函数在步骤1的基础上求出每月的累计访问次数
sql">with t1 as(select user_id, date_format(regexp_replace(visit_time, '/', '-'), 'yyyy-MM') year_month, sum(visit_cnt) visit_cntfrom visitgroup by user_id, date_format(regexp_replace(visit_time, '/', '-'), 'yyyy-MM'))select user_id, year_month, visit_cnt, sum(visit_cnt) over (partition by user_id order by year_month) acc_visit_cnt
from t1
3 小结
本文给出了一种累计指标的计算方法,主要涉及的知识点如下:
- (1)regexp_replace函数的使用
- (2)date_format函数的使用
- (3)累计指标求解。sum() over()
如果觉得本文对你有帮助,想进一步学习SQL语言这门艺术的,那么不妨也可以选择去看看我的博客专栏 ,部分内容如下:
数字化建设通关指南
专栏 原价99,现在活动价59.9,按照阶梯式增长,直到恢复原价。
专栏主要内容:
(1)SQL进阶实战技巧
可以参考如下教程,具体链接如下
SQL很简单,可你却写不好?也许这才是SQL最好的教程
上面链接中的文章及技巧会不定期更新。
(2)数仓建模实战技巧和个人心得
1)新人入职新公司后应如何快速了解业务?
2)以业务视角看宽表化建设?
3) 维度建模 or 关系型建模?
4)业务模型与数据模型有什么区别?业务阶段的模型该如何建设?
5)业务指标体系该如何建设?指标体系该如何维护?指标平台应如何建设?指标体系 该由谁来搭建?
6)如何优雅设计DWS层?DWS层模型好坏该如何评价?
7)指标发生异常,该如何排查?应从哪些方面入手寻找问题点?
8) 数据架构的选择,mpp or hadoop?
9)数仓团队应如何体现自己的业务价值,讲好数据故事?
10)BI与大数据有什么关系?BI与信息化、数字化之间有什么关系?BI与报表之间的关 系?
11)数据部门如何与业务部门沟通,并规划指引业务需求?
文章不限于以上内容,有新的想法也会及时更新到该专栏。
具体专栏链接如下:
数字化建设通关指南_莫叫石榴姐的博客-CSDN博客