大家好,我是老兵。
本期继续为大家介绍大数据面试中常见的SQL真题,本期SQL系列难度为中等,可与第一期面试SQL文章对照观看。
文章旨在帮助大家抱团取暖,希望对小伙伴笔试会有所帮助。
1 统计出每个用户的月累积访问次数
题目介绍
页面用户行为日志中记录用户id、访问时间、访问次数字段,统计日志中每个用户的累积访问次数,数据示意如下:
原始数据
| uid | visitDate | visitCount |
|---|---|---|
| 001 | 2022-01-01 | 5 |
| 001 | 2022-01-03 | 8 |
| 002 | 2022-12-01 | 5 |
| 002 | 2022-10-02 | 4 |
| 002 | 2022-11-03 | 7 |
结果数据
| uid | 月份 | 小计 | 月累计 |
|---|---|---|---|
| 001 | 2022-01 | 11 | 11 |
| 001 | 2022-02 | 13 | 24 |
| 002 | 2022-01 | 10 | 11 |
| 001 | 2022-02 | 13 | 23 |
题目分析
月累计是企业实际生产场景中常见指标,一般结合多维度进行月、周统计分析,构建指标存于宽表。
通过分析可知累计访问次数包含用户每月份以及各月份累计,这里使用sum聚合函数 + 开窗函数来计算。
解题方法
1) 实现思路
-
计算每人单月访问量(group by uid/月份)
-
按月累计访问量(sum() over())
-
统计每用户每月份访问和累计访问
2)SQL代码
select
userId,
mn,
mn_count,
sum(mn_count) over(partition by uid order by mn)
from
( select
uid,
&nbs

&spm=1001.2101.3001.5002&articleId=128211720&d=1&t=3&u=3d07735fca804c4ca63f3e8885af06c3)
1278

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



