当前位置: 首页 > news >正文

【Hive sql面试题】找出连续活跃3天及以上的用户

表数据如下:

在这里插入图片描述

要求:求出连续活跃三天及以上的用户

在这里插入图片描述

建表语句和插入数据如下:

create table t_useractive(uid   string,dt    string
);insert into t_useractive
values('A','2023-10-01 10:10:20'),('A','2023-10-02 10:10:20'),('A','2023-10-03 10:16:20'),('A','2023-10-04 10:16:20'),('B','2023-10-01 12:10:25'),('B','2023-10-03 12:10:25'),('B','2023-10-04 18:10:25'),('B','2023-10-05 18:10:25'),('C','2023-10-01 10:20:20'),('C','2023-10-03 10:20:20'),('C','2023-10-05 12:21:24'),('C','2023-10-06 13:11:24'),('D','2023-10-02 12:10:20'),('D','2023-10-03 12:10:20'),('D','2023-10-05 13:12:29'),('D','2023-10-06 15:10:20');

解题思路和答案

核心:

根据uid和 年月日 分组之后(目的是排除同一个用户在同一天登录了多次的情况),下一条数据登录时间与本条数据登 录时间间隔为一天就代表连续登录

思路:

1、根据id和 substr(dt,1,10) 分组(排除同一个用户在同一天登录了多次的情况)

2、根据 substr(dt,1,10) 进行排名(这里排除同一个用户在同一天登录了多次的情况,所以row_number()、rank() 和 dense_rank() 都可以使用)

3、将日期和排名之后的数字相减(使用 date_sub() ),得到一个新的日期

4、如果这个新的日期出现三次及以上,就代表连续登录三天及以上(根据新的日期分组 count() )

代码:

with t as (select uid,substr(dt,1,10) dt1,row_number() over (partition by uid order by substr(dt,1,10)) day from t_useractive group by uid,substr(dt,1,10)
)
select uid from t group by date_sub(dt1,day),uid having count(*) >= 3;
http://www.lryc.cn/news/476574.html

相关文章:

  • Linux curl命令下载显示时间/速度/大小
  • sklearn|机器学习:决策树(一)
  • Rust中三种方式使用环境变量
  • 搭建支持国密GmSSL的Nginx环境
  • Docker部署Portainer CE结合内网穿透实现容器的可视化管理与远程访问
  • 不适合的学习方法
  • 在子类中调用父类的构造函数
  • 【K8S系列】Kubernetes 中 Service 的流量不均匀问题【已解决】
  • C-小H学生物
  • 什么是软件设计模式, 它们⽤于解决什么问题, 它们为什么有效
  • LeetCode 3165.不包含相邻元素的子序列的最大和:单点修改的线段树(动态规划)
  • ios 快捷指令扩展(Intents Extension)简单使用 swift语言
  • 虚拟化环境中的精简版 Android 操作系统 Microdroid
  • NFTScan Site:以蓝标认证与高级项目管理功能赋能 NFT 项目
  • Vue:模板 MVVM
  • Kafka 消息丢失如何处理?
  • Mysql报错注入之floor报错详解
  • EPS原理笔记
  • LeetCode 876. 链表的中间结点
  • 划界与分类的艺术:支持向量机(SVM)的深度解析
  • 题目:100条经典C语言笔试题目(1-5)
  • python代码编写规范及注意事项
  • 【Linux】命令行参数 | 环境变量
  • python 使用进程池并发执行 SQL 语句
  • 我也谈AI
  • 算法妙妙屋-------1.递归的深邃回响:二叉树的奇妙剪枝
  • 编写第一个 Appium 测试脚本:从安装到运行!
  • mysql查表相关练习
  • airtest+poco多脚本、多设备批处理运行测试用例自动生成测试报告
  • Prometheus套装部署到K8S+Dashboard部署详解