当前位置:   article > 正文

Hive sql 常见面试题-查询相同时刻多地登陆的用户_hvie lead()查询相同时刻多地登陆的用户

hvie lead()查询相同时刻多地登陆的用户

1. 题目需求

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

期望结果如下:
在这里插入图片描述

2. 需要用到的表

用户登录明细表:user_login_detail
在这里插入图片描述

3. 查询sql

with tmp1 as (

	select user_id, ip_address, login_ts, logout_ts,

        max(logout_ts) over(PARTITION BY user_id ORDER BY login_ts rows between unbounded preceding and 1 preceding) lag_ts,

  	lag(ip_address,1,0) over(PARTITION BY user_id ORDER BY login_ts) lag_ip from user_login_detail

),tmp2 as (

	select user_id, if(lag_ts>login_ts,if(lag_ip!=ip_address,1,0),0) flags from tmp1

)select user_id from tmp2 where flags = 1 group by user_id
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/745902
推荐阅读
相关标签
  

闽ICP备14008679号