练习mysql
我们有如下的用户访问数据
userId visitDate visitCount
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
要求使用SQL统计出每个用户的累积访问次数,如下表所示:
用户id 月份 小计 累积
u01 2017-01 11 11
u01 2017-02 12 23
u02 2017-01 12 12
u03 2017-01 8 8
u04 2017-01 3 3
SELECT
t2.userid,
t2.visitmonth,
t2.subtotal_visit_cnt,
SUM(t2.subtotal_visit_cnt) OVER (PARTITION BY t2.userid ORDER BY t2.visitmonth) AS total_visit_cnt
FROM
(SELECT
userid,
DATE_FORMAT(visitdate, '%Y-%m') AS visitmonth,
SUM(visitcount) AS subtotal_visit_cnt
FROM
test1
GROUP BY
userid,
DATE_FORMAT(visitdate, '%Y-%m')) t2
ORDER BY
t2.userid,
t2.visitmonth;

该文章展示了一个SQL查询示例,用于从用户访问数据中计算每个用户在每个月的累计访问次数。通过日期格式化和分组,然后使用窗口函数SUM()OVER()进行累积求和。

2266

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



