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

Hive_sql如何计算连续签到天数

在a表中有id和date两列,记录用户当天是否签到,想查询出哪些用户连续签到了3天(或连续签到更多天,是连续签到)

在这里插入图片描述

(1) 先开窗,排个序:

select user_id, login_time,
row_number() over(partition by user_id order by login_time) num 
from login_log;

开完窗的结果如下:

在这里插入图片描述

(2) 利用等差数列的特性,如果是连续登录,login_time - num 则相等,因此可以这样写:

select t.user_id, t.login_time, date_sub(login_time, INTERVAL t.num DAY) date_rslt
from 
(select user_id, login_time, row_number() over(partition by user_id order by login_time) num from login_log
) t;

注:INTERVAL 关键字可以用于计算时间间隔, date_sub(login_time, INTERVAL t.num DAY)表示登录时间减去 num 天; 若 DAY 改成 HOUR 表示减去 num 小时。
以上 SQL 执行后得到:

在这里插入图片描述

(3)分组后可获得结果:

select a.user_id,a.date_rslt,count(1) as cnt
from(select t.user_id, t.login_time,date_sub(login_time, INTERVAL t.num DAY) date_rsltfrom (select user_id, login_time, row_number() over(partition by user_id order by login_time) num from login_log) t
) a
group by a.user_id, a.date_rslt;
http://www.dtcms.com/a/314939.html

相关文章:

  • word常见问题汇总
  • 无偿分享120套开源数据可视化大屏H5模板
  • Fiddler 中文版怎么用 实现接口抓包调试与前后端联调闭环
  • Harmon、TokLIP论文解读
  • Flask全栈入门:打造区块链艺术品交易所
  • RTX5060显卡安装cuda版本PyTorch踩坑记录
  • 疏老师-python训练营-Day35模型可视化推理
  • K均值聚类与Apriori应用探索中医证素数据分析
  • 区块链 和 一致性哈希的结合
  • 多模态大模型研究每日简报【2025-08-03】
  • vue3入门-概览讲解
  • Mirror学习笔记
  • 飞算 JavaAI 实战:从代码生成到架构优化的全场景应用指南
  • 抢救HD7670M假显卡记录
  • 第12届蓝桥杯Scratch_选拔赛_初级组_真题2020年9月20日
  • MySQL Router
  • Spring Boot 应用结合 Knife4j 进行 API 分组授权管理配置
  • sqli-labs:Less-24关卡详细解析
  • 挑战指针题
  • TCP(2)
  • IP 成长的破局之道:从停滞到突破的核心逻辑
  • MyBatis高效查询:简化JDBC开发实战
  • Python 虚拟环境深入浅出全指南
  • 为流媒体时代而生的云服务:Akamai 推出 Accelerated Compute 加速计算服务
  • 在 Maven 多模块项目中统一管理配置文件
  • 8.4 Java Web(Maven P50-P57)
  • 【web应用】为什么 子模块已经删除,但 Maven 依赖项仍然报错?
  • python采集拍立淘按图搜索API接口,json数据参考
  • maven install和package的区别
  • AI绘图-Stable Diffusion-WebUI的基本用法