返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >SQL查询语句求出用户的连续登陆天数
  • 502
分享到

SQL查询语句求出用户的连续登陆天数

2024-04-02 19:04:59 502人浏览 独家记忆
摘要

一、题目描述 求解用户登陆信息表中,每个用户连续登陆平台的天数,连续登陆基础为汇总日期必须登陆,表中每天只有一条用户登陆数据(计算中不涉及天内去重)。 表描述:user_id:用户的

一、题目描述

求解用户登陆信息表中,每个用户连续登陆平台的天数,连续登陆基础为汇总日期必须登陆,表中每天只有一条用户登陆数据(计算中不涉及天内去重)。

表描述:user_id:用户的id;

              sigin_date:用户的登陆日期。

二、解法分析

注:求解过程有多种方式,下述求解解法为笔者思路,其他解法可在评论区交流。

思路:

该问题的突破的在于登陆时间,计算得到连续登陆标识,以标识分组为过滤条件,得到连续登陆的天数,最后以user_id分组,以count()函数求和得到每个用户的连续登陆天数。

连续登陆标识 =(当日登陆日期 - 用户的登陆日期)- 开窗排序的顺序号(倒序)

三、求解过程及结果展示

1.数据准备


-- 1.建表语句
drop table if exists test_sigindate_cnt;
create table test_sigindate_cnt(
    user_id string
    ,sigin_date string 
)
;
-- 2.测试数据插入语句
insert overwrite table test_sigindate_cnt 
    select 'uid_1' as user_id,'2021-08-03' as sigin_date        
    uNIOn all
    select 'uid_1' as user_id,'2021-08-04' as sigin_date 
    union all
    select 'uid_1' as user_id,'2021-08-01' as sigin_date        
    union all
    select 'uid_1' as user_id,'2021-08-02' as sigin_date        
    union all
    select 'uid_1' as user_id,'2021-08-05' as sigin_date       
    union all
    select 'uid_1' as user_id,'2021-08-06' as sigin_date        
    union all
    select 'uid_2' as user_id,'2021-08-01' as sigin_date        
    union all
    select 'uid_2' as user_id,'2021-08-05' as sigin_date        
    union all
    select 'uid_2' as user_id,'2021-08-02' as sigin_date         
    union all
    select 'uid_2' as user_id,'2021-08-06' as sigin_date        
    union all
    select 'uid_3' as user_id,'2021-08-04' as sigin_date     
    union all
    select 'uid_3' as user_id,'2021-08-06' as sigin_date        
    union all
    select 'uid_4' as user_id,'2021-08-03' as sigin_date        
    union all
    select 'uid_4' as user_id,'2021-08-02' as sigin_date              
;

2.计算过程


select  user_id
        ,count(1) as sigin_cnt
from    (
    select  
            user_id
            ,datediff('2021-08-06',sigin_date)  as data_diff
            ,row_number() over (partition by user_id order by sigin_date desc) as row_num
    from    test_sigindate_cnt
) t
where   data_diff - row_num = -1
group by 
        user_id
;

3.计算结果及预期结果对比

 3.1 预期结果 

汇总日期 用户id 登陆天数
2021-08-06 uid_1 6
2021-08-06 uid_2 2
2021-08-06 uid_3 1

3.2 计算结果

以上就是sql查询语句求出用户的连续登陆天数的详细内容,更多关于SQL语句求用户的连续登陆天数的资料请关注编程网其它相关文章!

--结束END--

本文标题: SQL查询语句求出用户的连续登陆天数

本文链接: https://lsjlt.com/news/137633.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • SQL查询语句求出用户的连续登陆天数
    一、题目描述 求解用户登陆信息表中,每个用户连续登陆平台的天数,连续登陆基础为汇总日期必须登陆,表中每天只有一条用户登陆数据(计算中不涉及天内去重)。 表描述:user_id:用户的...
    99+
    2024-04-02
  • SQL查询连续登陆7天以上的用户的方法实现
    查询7天连续登陆用户这个问题很经典,解决方法也有很多,这里我讲一下笔者的方法,希望对大家有帮助。 具体思路: 1、因为每天用户登录次数可能不止一次,所以需要先将用户每天的登录日期去重...
    99+
    2024-04-02
  • SQL查询至少连续n天登录的用户
    以连续3天为例,使用工具:MySQL。 1.创建SQL表: create table if not exists orde(id varchar(10),date date...
    99+
    2024-04-02
  • SQL 查询连续登录的用户情况
    以连续3天为例,使用工具:MySQL。 1.创建SQL表: create table if not exists orde(id varchar(10),date da...
    99+
    2024-04-02
  • 如何使用SQL查询至少连续n天登录的用户
    这篇文章主要为大家展示了“如何使用SQL查询至少连续n天登录的用户”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用SQL查询至少连续n天登录的用户”这篇文章吧。1.创建SQL表:creat...
    99+
    2023-06-22
  • SQL查询至少连续七天下单的用户
    创建表格 create table orde(id varchar(10),date datetime,orders varchar(10)); insert ...
    99+
    2024-04-02
  • SQL怎么查询连续登录的用户情况
    这篇文章主要为大家展示了“SQL怎么查询连续登录的用户情况”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“SQL怎么查询连续登录的用户情况”这篇文章吧。以连续3天为例,使用工具:MySQL。创建S...
    99+
    2023-06-22
  • SQL怎么查询至少连续七天下单的用户
    本篇内容介绍了“SQL怎么查询至少连续七天下单的用户”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!创建表格create table...
    99+
    2023-06-22
  • Hive-SQL查询连续活跃登录用户思路详解
    连续活跃登陆的用户指至少连续2天都活跃登录的用户 解决类似场景的问题 创建数据 CREATE TABLE test5active( dt string, user_id stri...
    99+
    2024-04-02
  • 思维进阶 查询连续签到几天的用户
    select user_name,sign_date,IF(@pre=user_name,@rownum:=@rownum+1,@rownum:=1), @pre:=user_name from ( select us...
    99+
    2017-08-20
    思维进阶 查询连续签到几天的用户
  • SQL实现筛选出连续3天登录用户与窗口函数的示例代码
    目录还原试题SQL窗口函数一.窗口函数有什么用二.什么是窗口函数三.如何使用1.专用窗口函数rank2.其他专业窗口函数3.聚合函数作为窗口函数4.注意事项四.总结1.窗口函数语法2...
    99+
    2024-04-02
  • 数据库中如何查看连续两天没有登录系统的用户
    这篇文章主要为大家展示了“数据库中如何查看连续两天没有登录系统的用户”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“数据库中如何查看连续两天没有登录系统的用户”这...
    99+
    2024-04-02
  • 如何查询Oracle正在执行的sql语句及执行该语句的用户
    这篇文章主要介绍了如何查询Oracle正在执行的sql语句及执行该语句的用户,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。--查询Oracl...
    99+
    2024-04-02
  • sql多表内连接查询使用的语句是什么
    这篇文章主要讲解了“sql多表内连接查询使用的语句是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“sql多表内连接查询使用的语句是什么”吧! ...
    99+
    2024-04-02
  • 用一条SQL语句查询不同数据库的方法
    小编给大家分享一下用一条SQL语句查询不同数据库的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!需求:一条SQL语句从多个数...
    99+
    2024-04-02
  • 通过查询Sql Server获取Horizon View 某个时间段的用户登陆信息
     use [Horizon_logDB]             ...
    99+
    2024-04-02
  • PGSQL查询最近N天的数据及SQL语句实现替换字段内容
    目录1、用SQL查询最近N天的数据2、用SQL语句实现替换字段里的内容3、SQL将查询结果赋值4、SQL查询字段内容为 NULL值时候赋值总结1、用SQL查询最近N天的数据 思路:先获取当前的时间,然后更具当前时间去减去...
    99+
    2023-03-06
    plsql查询当天数据 pgsql查询最近数据
  • 如何使用SQL语句在MySQL中进行数据连接和联合查询?
    如何使用SQL语句在MySQL中进行数据连接和联合查询?数据连接和联合查询是 SQL 语言中常用的技巧,能够在多个表中获取和筛选所需的数据。在 MySQL 中,我们可以通过使用 JOIN 子句来实现数据连接,使用 UNION 和 U...
    99+
    2023-12-17
    MySQL 数据连接 SQL语句
  • 通过sql语句查询出某个字段在数据库中的某个表
    新入职的小伙伴,肯定还没熟悉数据库中表于表的关系以及表中的字段的含义是什么,就需要进行需求开发,导致会出现对某个字段在哪张表里面都分辨不清,不过不要怕,可以利用已下sql语句快速找到。(要注意的是,此方法可能不适用于所有类型的数据库系统,但...
    99+
    2023-09-05
    数据库 sql mysql
  • oracle新建用户执行sql查询语句出现错误ORA-00942:表或视图不存在
    oracle创建新用户后客户端执行SQL查询后出现错误提示如下:执行查询语句如下:select * from sm_sales_order;ORA-00942:表或视图不存在创建新用户并指定表空间...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作