sql连续登录

1、sql建表语句

    



DROP TABLE IF EXISTS `app_login_record`;
CREATE TABLE `app_login_record`  (
  `user_id` int(0) NULL DEFAULT NULL,
  `enter_time` datetime(0) NULL DEFAULT NULL,
  `leave_time` datetime(0) NULL DEFAULT NULL
);


INSERT INTO `app_login_record` VALUES (789012, '2023-05-03 17:52:00', '2023-05-03 17:55:00');
INSERT INTO `app_login_record` VALUES (789013, '2023-05-04 12:02:00', '2023-05-04 12:03:00');
INSERT INTO `app_login_record` VALUES (789012, '2023-05-02 13:36:00', '2023-05-02 13:45:00');
INSERT INTO `app_login_record` VALUES (789001, '2023-05-08 14:25:00', '2023-05-08 14:32:00');
INSERT INTO `app_login_record` VALUES (789003, '2023-05-10 10:46:00', '2023-05-10 10:47:00');
INSERT INTO `app_login_record` VALUES (789001, '2023-05-07 08:12:00', '2023-05-07 08:14:00');
INSERT INTO `app_login_record` VALUES (789012, '2023-05-04 16:32:00', '2023-05-04 16:35:00');
INSERT INTO `app_login_record` VALUES (789012, '2023-05-08 11:58:00', '2023-05-08 12:01:00');
INSERT INTO `app_login_record` VALUES (789001, '2023-05-09 19:35:00', '2023-05-09 19:38:00');
INSERT INTO `app_login_record` VALUES (789003, '2023-05-11 20:35:00', '2023-05-11 20:38:00');
INSERT INTO `app_login_record` VALUES (789009, '2023-05-01 22:58:00', '2023-05-01 23:03:00');



      

2、请找出连续3天登录小程序且浏览时长大于2分钟的用户

     第1种方法(没考虑,一天登录2次的情况))、解:

select distinct user_id 
from(
SELECT * ,
               CASE
               WHEN DATE_SUB(str_to_date(enter_time,'%Y-%m-%d'),INTERVAL 1 DAY) = str_to_date(@old,'%Y-%m-%d')  and @u_id=user_id and @old:=enter_time 
					THEN @size:=@size+1
					
               WHEN @old:=enter_time 
					THEN @size:=1 
               END
 AS tt, @u_id:=user_id
FROM (select * from app_login_record 
where      TIMESTAMPDIFF(MINUTE, enter_time,  leave_time)  >2
group BY user_id,enter_time) t
ORDER BY user_id,enter_time) tb
where tb.tt = 3

3、第2种方法(没考虑,一天登录2次的情况)、解:

select DISTINCT tc.user_id from(
select *,
 if(ta.tg=1 and ta.t_user_id=1,@size:=@size+1,@size:=1) as t_num
from(
select *,lead(left(enter_time,10), 1) over () = 
     DATE_ADD(left(enter_time,10),INTERVAL 1 day) as tg ,
	  lead(user_id, 1) over () = user_id  as t_user_id
	  from app_login_record t , (SELECT @size:=1)r
		where TIMESTAMPDIFF(MINUTE, enter_time,  leave_time)  > 2
ORDER BY t.user_id,t.enter_time) ta)tc
where tc.t_num = 3


-- 怎么定义多个变量,如下
-- (SELECT @old:=null,@size:=1,@name:=null)r

4、第3种方法(这里考虑了,一天登录两次的情况,需要去重)、解:

      

select DISTINCT tw.user_id from(   
select *,
 if(tc.tg=1 and tc.t_user_id=1,@size:=@size+1,@size:=1) as t_num
from (
	select user_id,
	  lead(enter_time_s, 1) over () = 
    DATE_ADD(enter_time_s,INTERVAL 1 day) as tg ,
	  lead(user_id, 1) over () = user_id  as t_user_id
	from( 
    select DISTINCT user_id as user_id , left(enter_time,10) as enter_time_s
 	  from app_login_record t , (SELECT @size:=1)r
		where TIMESTAMPDIFF(MINUTE, enter_time,  leave_time)  > 2
    ORDER BY  t.user_id,enter_time_s)ta)tc)tw
	where tw.t_num = 3
		
		
		
-- 		语法解释1:
-- 		别名不能直接做where和group by后的查询条件,但order by 可以用别名
--    原因是where在select之前执行,所以别名不能直接做where后的查询条件
--    group by 同理。
--    但order by是最后执行,所以可以用别名。


--   语法解释2
--   怎么定义多个变量,如下
--   (SELECT @old:=null,@size:=1,@name:=null)r


5、

6、

7、

8、

9、

10、

11、

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/586546.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用xshell工具连接ubuntu的root账户被拒绝的解决方法

问题描述: 我在使用xshell工具远程连接Ubuntu虚拟机的过程中,如果连接的是的普通用户则xshell工具可以正常连接,但是当我向连接ubuntu系统的root用户,即便是密码输入正确但还是不能连接成功。不能连接成功的截图如下: …

requests库进行接口请求

请求的常规写法 requests.post() 、requests.get() 从中可以看出: 必填参数: url可缺省参数: data,json等、关键字参数 **kwargs 如下进行了一个post请求的登录,且请求体在body中 知识点1 当为post请求时&#xff1…

建堆时间复杂度

片头 嗨!小伙伴们,大家好! 在上一篇中,我们学习了什么是堆,以及如何实现堆。这一篇中,我将继续带领大家来深入学习堆,准备好了吗?我要开始咯! 首先,大家还记…

opencv_17_翻转与旋转

一、图像翻转 1)void flip_test(Mat& image); 2)void ColorInvert::flip_test(Mat& image) { Mat dst; //flip(image, dst, 0); //上下翻转 flip(image, dst, 1); //左右翻转 // flip(image, dst, -1); //180度翻转 imsho…

VScode 无法连接云服务器

试了很多方法,比如更换VScode版本,卸载重装,删除配置文件 重启电脑,都无法成功。最后重置电脑后才连接上,但是重启服务器后又出现该问题。 方法一:修改环境 方法二:把vscode卸载干净重下

【快速入门】数据库的增删改查与结构讲解

文章的操作都是基于小皮php study的MySQL5.7.26进行演示 what 数据库是能长期存储在计算机内,有组织的,可共享的大量数据的集合。数据库中的数据按照一定的数据模型存储,具有较小的冗余性,较高的独立性和易扩展性,并为…

LabVIEW智能变电站监控系统设计与实现

LabVIEW智能变电站监控系统设计与实现 随着电力系统和智能化技术的快速发展,建立一个高效、可靠的变电站监控系统显得尤为重要。通过分析变电站监控系统的需求,设计了一个基于LabVIEW软件的监控平台。该平台利用虚拟仪器技术、传感器技术和无线传输技术…

数据结构中的栈(C语言版)

一.栈的概念 栈是一种常见的数据结构,它遵循后进先出的原则。栈可以看作是一种容器,其中的元素按照一种特定的顺序进行插入和删除操作。 压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。 出栈:栈的删除操作叫做…

2024年的十大技术趋势 - AI 等等

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

网优小工具-基站ID行列转换

网优小工具-基站ID行列转换 因在日常工作需要对基站ID批量行转列,以方便在网管上批量筛选指定网元,该小工具基于微软Power Query插件编写,工具方便、简洁、易用,共享出来以方便工作。 工作界面 1.粘贴需筛…

学习VUE2第6天

一.请求拦截器 可以节流,防止多次点击请求 toast是单例 二.前置路由守卫 在Vue.js中,前置路由守卫是指在路由转换实际发生之前执行的钩子函数。这是Vue Router(Vue.js官方的路由管理器)提供的一种功能,允许开发者在用…

中兴UME网管LTE共享参数配置-PLMN添加

本文为中兴设备UME网管电联中频共享参数配置,PLMN添加参数配置部分,因UME与U31网管添加PLMN配置区别较大,UME网管需同时配置运营商EN-DC策略,相关配置流程及参数配置如下文。 PLMN eNodeB CU …

与 Apollo 共创生态:观看7周年大会的心路历程

前言 在科技飞速发展的今天,自动驾驶技术已然成为行业创新的热点之一。作为一名长期关注自动驾驶领域的技术人员,我有幸见证了Apollo平台的成长与壮大。七年前,Apollo的诞生为我们带来了无尽的想象与期待;七年后的今天&#xff0…

【自研网关系列】过滤器链 -- 灰度发布过滤器

🌈Yu-Gateway::基于 Netty 构建的自研 API 网关,采用 Java 原生实现,整合 Nacos 作为注册配置中心。其设计目标是为微服务架构提供高性能、可扩展的统一入口和基础设施,承载请求路由、安全控制、流量治理等…

【介绍下Unity编辑器扩展】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

ubuntu下安装配置python3.11

方案1 添加仓库: $ sudo add-apt-repository ppa:deadsnakes/ppa $ sudo apt update $ sudo apt install python3.11然后查看有多少个python版本已经安装了: ls -l /usr/bin/python*python2.7,python 3.8 ,python 3.11. 然后,设置系统默认…

Android4.4真机移植过程笔记(一)

1、RK源码编译 获取内核源码: git clone git172.28.1.172:rk3188_kernel -b xtc_ok1000 内核编译环境: 从172.28.1.132编译服务器的/data1/ZouZhiPing目录下拷贝toolchain.tar.gz(交叉编译工具链)并解压到与rk3188_kernel同级目…

Visual Studio中怎样更改Nuget程序包源

场景 Visual Studio 2019 在使用NuGet添加依赖包时,在预览中搜索不到程序包。 排查下NuGet的程序包源为本地。 将程序包源修改下。 实现 在解决方案上右击选择管理解决方案中的NuGet程序包(在 Visual Studio 中打开“工具”>“选项”>“NuGet 包管理器”…

【配置】Docker搭建JSON在线解析网站

云服务器打开端口8787 连接上docker运行 docker run -id --name jsonhero -p 8787:8787 -e SESSION_SECRETabc123 henryclw/jsonhero-webhttp://ip:8787访问 Github:地址

考研数学|《880题》不会做,怎么办?

如果880大部分都不会做,说明基础掌握太差,如果已经到了10月底,我建议直接刷知能行吧。因为我一个同学经历和你类似,最后通过一个月高强度刷知能行算是补救了一些。 对于刚开始准备考研的同学和上面的题主,我想聊几句建…
最新文章