提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
题目
table_a ( 用户userid和登录时间time)求连续登录3天的用户数。
一、解题思路
①可以使用窗口函数,根据用户分组然后再根据登录时间升序,再进行编号,这里的编号函数可以使用row_number()、dense_rank()、rank()都可以,因为同一用户不可能在同一时间登录,所以同一用户不可能出现两个完全相同的时间。
②如果两个时间连续,必定登录的时间减去编号天数是相同的
③相同个数大于3的用户即为所求
二、具体步骤
1.窗口函数得到编号(date_)
代码如下(示例):
SELECT * ,dense_rank() OVER(PARTITION BY userid ORDER BY time)date_ FROM user
运行结果如图: