今天有同学问了一道sql算法题。这个比较有代表性,今天说一下 。
描述 你正在搭建一个用户活跃度的画像,其中一个与活跃度相关的特征是“最长连续登录天数”, 请用SQL实现“2023年1月1日-2023年1月31日用户最长的连续登录天数”
登陆表 tb_dau:
登陆表 tb_dau:
fdate user_id
2023-01-01 10000
2023-01-02 10000
2023-01-04 10000
输出:
user_id max_consec_days
10000 2
drop table if exists tb_dau;
create table `tb_dau` (
`fdate` date,
`user_id` int
);
insert into tb_dau(fdate, user_id)
values
('2023-01-01', 10000),
('2023-01-02', 10000),
('2023-01-04', 10000);
其实这种题解答有很多种
其中一种 解法
select user_id ,max(max1) as max_consec_days from (
select user_id,count(*) as max1 from (
SELECT
user_id,
fdate,
DATE_SUB(fdate, INTERVAL (ROW_NUMBER()

最低0.47元/天 解锁文章
3261

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



