hive sql计算连续签到天数

泄露秘密 提交于 2020-08-16 06:58:54

在a表中有id和date两列,记录用户当天是否签到,想查询出哪些用户连续签到了3天(或连续签到更多天,是连续签到),sql改如何写呢?

首先

用row_number来统计排名

select id,date,row_number() over(partition by id order by date) as rank

结果

然后

用date-rank作为一个新的字段,再count不同的date-rank作为cnt,并且group by id,(date-rank),得到如下结果:

后面的那个cnt就是代表这个id连续的次数

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!