题解 | #找出待召回的流失用户#

找出待召回的流失用户

https://www.nowcoder.com/practice/74ec0a3766bf480ab7690486943678a4

解题思路

这道题其实不用想得那么复杂,其实很简单。

难点可能在于:

  1. 聚合函数的使用
  2. 题目的当前时间是指整个表格当中最大的时间

由于group by的执行顺序在having前面,所以在having的时候已经分组了。

故求出当前时间用:

select max(login_date)

from user_login_tb

作为end_time

每组最大的时间用max(login_date) 作为start_time

用timestampdiff求出时间差

timestampdiff (day,max(login_date),
        (
            select max(login_date)
            from user_login_tb
        )
    ) >= 30

完整代码

select
    uid,
    count(distinct login_date) as days,
    count(uid) as times
from
    user_login_tb
group by
    uid
having
    timestampdiff (
        day,
        max(login_date),
        (
            select
                max(login_date)
            from
                user_login_tb
        )
    ) >= 30
    and count(uid) between 3 and 4

全部评论

相关推荐

10-17 23:18
已编辑
西北农林科技大学 Web前端
独行m:给25可以试试,但他只能给12,那就是纯纯的事精
秋招,不懂就问
点赞 评论 收藏
分享
__Offer__:认识的室友啥也不回细节,线下面联想大模型一次通关我给我干不回了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务