sql-访问日期之间最大的空档期

Create table If Not Exists UserVisits(user_id int, visit_date date)

Truncate table UserVisits

insert into UserVisits (user_id, visit_date) values ('1', '2020-11-28')

insert into UserVisits (user_id, visit_date) values ('1', '2020-10-20')

insert into UserVisits (user_id, visit_date) values ('1', '2020-12-3')

insert into UserVisits (user_id, visit_date) values ('2', '2020-10-5')

insert into UserVisits (user_id, visit_date) values ('2', '2020-12-9')

insert into UserVisits (user_id, visit_date) values ('3', '2020-11-11')

假设今天的日期是 '2021-1-1' 。

编写 SQL 语句,对于每个 user_id ,求出每次访问及其下一个访问(若该次访问是最后一次,则为今天)之间最大的空档期天数 window 。

返回结果表,按用户编号 user_id 排序。

查询格式如下示例所示:

select user_id,
       max(nextday - visit_date) bigwind
from (select u.user_id,
             u.visit_date,
             lead(visit_date, 1, '2021-1-1') over (partition by user_id order by visit_date) nextday
      from uservisits u) tmp
group by user_id
order by user_id desc
;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值