【LeetCode1454. 活跃用户】MySQL 用户自定义变量,面向过程编程解决"连续天数"的问题 (需要处理同一天重复多次登录)
  Wfy5FshhAYgk 2023年11月05日 62 0

目录

  • 题目地址
  • 题目描述
  • 代码

题目地址

https://leetcode.cn/problems/active-users/description/

题目描述

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

编写解决方案,  找到 活跃用户 的 id 和 name。

返回的结果表按照 id 排序 

代码

注意需要处理,同一天多次登录的情形。

# Write your MySQL query statement below

WITH t1  AS (
    SELECT
        #------------只需要修改里面的逻辑就行。注意语句是“顺序执行”的-------------------------------
        login_date,
        id,
        (case when login_date = @prev_date + INTERVAL 1 DAY AND id = @prev_author_id then @consec_days := @consec_days + 1
        when login_date = @prev_date AND id = @prev_author_id then @consec_days := @consec_days 
        else @consec_days := 1 end) 
        
        AS consec_days,
        @prev_date := login_date,
        @prev_author_id := id
        #-------------只需要修改里面的逻辑就行。注意语句是“顺序执行”的------------------------------
    FROM
        (SELECT @prev_date := NULL, @prev_author_id := NULL, @consec_days := 1) vars,
        (SELECT login_date, id FROM Logins ORDER BY id , login_date) ordered_dates
)


select a.* from
(SELECT distinct id
from t1
where consec_days>=5) tmp1
join Accounts a on a.id=tmp1.id
order by a.id asc



【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
Wfy5FshhAYgk