day22 活跃用户&&找到连续区间的开始和结束数字

文章提供了两个SQL查询示例。第一个查询从Accounts和Logins表中找出至少连续5天登录的活跃用户ID和名字。第二个查询检测Logs表中的连续ID区间,返回每个区间的开始和结束ID,按start_id排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1454. 活跃用户
在这里插入图片描述
写一个 SQL 查询, 找到活跃用户的 id 和 name.

活跃用户是指那些至少连续 5 天登录账户的用户.

返回的结果表按照 id 排序.

结果表格式如下例所示:
在这里插入图片描述
考点:日期相减函数date_sub(xxx,interval yyy day)

select
	   distinct t.id,
		name
from
		(select
				a.*,
				date_sub(l.login_date, interval rank() over(partition by a.id order by l.login_date)   DAY) as rk
		from
				Accounts as a left join (select  distinct(login_date) , id from Logins) as l on l.id = a.id) as t
group by
		t.id,t.rk
having 
		count(rk)>=5

1285. 找到连续区间的开始和结束数字
在这里插入图片描述
后来一些 ID 从 Logs 表中删除。编写一个 SQL 查询得到 Logs 表中的连续区间的开始数字和结束数字。

将查询表按照 start_id 排序。

查询结果格式如下面的例子。

在这里插入图片描述

select
		min(log_id) as start_id,
		max(log_id) as end_id
from
		(select
				*,
				log_id - rank() over(order by log_id) as rk
		from
				Logs as a ) as t
group by
		rk
order by
		start_id
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值