22. 查询相同时刻多地登陆的用户

news/2025/2/12 7:44:10/

文章目录

        • 题目需求
        • 思路一
        • 实现一
        • 题目来源

题目需求

从登录明细表(user_login_detail)中查询在相同时刻,多地登陆(ip_address不同)的用户。

期望结果如下:

user_id

(用户id)
101
102
104

需要用到的表:

用户登录明细表:user_login_detail

user_id(用户id)ip_address(ip地址)login_ts(登录时间)logout_ts(登出时间)
101180.149.130.1612021-09-21 08:00:002021-09-27 08:30:00
102120.245.11.22021-09-22 09:00:002021-09-27 09:30:00
10327.184.97.32021-09-23 10:00:002021-09-27 10:30:00

思路一

分析题目:多地登录,找出(本次登录时间 < 上一次登出时间) and (本地ip地址 != 上次ip地址) 的用户。

在这里插入图片描述

实现一

-- 3) 找出(本次登录时间 < 上一次登出时间) and (本地ip地址 != 上次ip地址) 的用户
select distinct user_id
from (select user_id,ip_address,login_ts,logout_ts,-- 1) 计算上次登出时间(如果为null,则使用本地登录时间)lag(logout_ts, 1, login_ts) over (partition by user_id order by login_ts)           last_logout_ts,-- 2) 计算上次登录的ip地址(如果为null,则默认为 '000.000.000.000')lag(ip_address, 1, '000.000.000.000') over (partition by user_id order by login_ts) last_ip_addressfrom user_login_detail) t1
where login_ts < last_logout_tsand ip_address != last_ip_address;

题目来源

http://practice.atguigu.cn/#/question/22/desc?qType=SQL


http://www.ppmy.cn/news/744358.html

相关文章

Docker学习笔记17

跨主机容器间网络&#xff1a; 实现跨主机容器间通信的工具&#xff1a; 1&#xff09;Pipework 2&#xff09;Flannel 3&#xff09;Weave 4&#xff09;Open V Switch &#xff08;OVS&#xff09; 5&#xff09;Calico 1. Weave&#xff1a; 在每个宿主机上布置一个特…

获取今天日期或今天之前多少天 之后多少天

GetDateStr(AddDayCount) {let dd new Date();dd.setDate(dd.getDate() AddDayCount); //获取AddDayCount天后的日期let y dd.getFullYear();let m dd.getMonth() 1 < 10 ? "0" (dd.getMonth() 1) : dd.getMonth() 1; //获取当前月份的日期&#xff0c;不…

2022中元节前后几天不出门?前三天后三天不能出门是真的吗?

随着中元节的临近&#xff0c;在民间所流传的一些习俗也受到大家的关注&#xff0c;部分地区在中元节前后几天有不出门的说法&#xff0c;那中元节前后几天不出门&#xff1f;前三天后三天不能出门是真的吗&#xff1f; 一、2022中元节前后几天不出门&#xff1f; 中元节前3天…

判断第几天

题目描述 输入某年某月某日&#xff0c;判断这一天是这一年的第几天&#xff1f; 输入 输入为一行输入格式为YYYY-MM-DD 输出 输出这天是这一年的第几天 样例输入 2007-01-01 样例输出 1 #include<stdio.h> #include<math.h>int main(){int year,month…

计算该日在本年中是第几天?

定义一个结构体变量&#xff08;包括年、月、日&#xff09;。计算该日在本年中是第几天&#xff1f;注意闰年问题。 输出格式要求&#xff1a;"\n%d月%d日是%d年的第%d天。" 程序的运行示例如下&#xff1a; 请输入日期&#xff08;年&#xff0c;月&#xff0c;日&…

判断今年第几天

请你计算出 x年 y月 z 日是 x 年的第几天。 请注意闰年对答案的影响。 输入格式 一行三个整数&#xff0c;x&#xff0c;y 和 z。&#xff08;1583≤x≤2100&#xff09;。数据保证输入合法。 输出格式 一个整数&#xff0c;表示是第几天。 #include <stdio.h>int mai…

五一前几天

整理一下心情&#xff0c;迎接“五一”国际劳动节1、这几天频繁去和客户接触,所谈内容均是项目进展及客户意见,感觉真是----------- 汉颜! 挣钱不是容易的,要想从懂开发的客户手里挣钱更是难上加难,他们总会觉得自己的要求并不过分,而且没有超出合同范围之内,一旦发生修改总觉…

还有14天

还有14天,还有19天......