首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于hitsTime的映射类型

基于hitsTime的映射类型
EN

Stack Overflow用户
提问于 2022-09-27 00:25:37
回答 1查看 66关注 0票数 0

我有A桌:

代码语言:javascript
复制
hitsTime              type_             session_id
2022-09-23 19:18:19   lego_banner       1152969
2022-09-23 19:22:43   icon-Terdekat     1152969
2022-09-23 19:22:53   lego_banner       1152969
2022-09-23 19:45:34   lego_banner       1152969 
2022-09-23 19:45:39   lego_banner       1152969
2022-09-23 19:47:18   lego_banner       1152969
2022-09-23 19:47:51   lego_banner       1152969
2022-09-23 19:52:18   lego_banner       1152969
2022-09-23 19:58:00   lego_banner       1152969

表b:

代码语言:javascript
复制
hitsTime             session_id cart_id 
2022-09-23 19:47:02  1152969    378299
2022-09-23 19:20:35  1152969    304438
2022-09-23 19:27:25  1152969    304470  
2022-09-23 19:27:25  1152969    304495

流程是,如果我们单击type_,那么我们就可以添加cart_id。我想知道cart_id是哪种类型的。其思想是,如果hitsTime类型小于cart_id,cart id将进入特定类型。例如,在表b cart_id 304438中,hitsTime 2022-09-23 19:20:35,如果我们查看表a,类型是lego_banner,因为hitsTime 2022-09-23 19:18:19。cart_id不是从图标-Terdekat引起的hitsTime更多的是cart_id表b hitsTime。

预期产出:

代码语言:javascript
复制
session_id  cart_id  type_
1152969     304438   lego_banner
1152969     378299   lego_banner
1152969     304470   lego_banner
1152969     304495   lego_banner
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-28 00:26:35

这个查询适用于我:

代码语言:javascript
复制
with t1 as (
  select parse_datetime('%Y-%m-%d %H:%M:%S','2022-09-23 19:18:19') as hitsTime, 'lego_banner' as type_, 1152969 as session_id
  union all select parse_datetime('%Y-%m-%d %H:%M:%S','2022-09-23 19:22:43') as hitsTime, 'icon-Terdekat' as type_, 1152969 as session_id
  union all select parse_datetime('%Y-%m-%d %H:%M:%S','2022-09-23 19:22:53') as hitsTime, 'lego_banner' as type_, 1152969 as session_id
  union all select parse_datetime('%Y-%m-%d %H:%M:%S','2022-09-23 19:45:34') as hitsTime, 'lego_banner' as type_, 1152969 as session_id
  union all select parse_datetime('%Y-%m-%d %H:%M:%S','2022-09-23 19:45:39') as hitsTime, 'lego_banner' as type_, 1152969 as session_id
  union all select parse_datetime('%Y-%m-%d %H:%M:%S','2022-09-23 19:47:18') as hitsTime, 'lego_banner' as type_, 1152969 as session_id
  union all select parse_datetime('%Y-%m-%d %H:%M:%S','2022-09-23 19:47:51') as hitsTime, 'lego_banner' as type_, 1152969 as session_id
  union all select parse_datetime('%Y-%m-%d %H:%M:%S','2022-09-23 19:52:18') as hitsTime, 'lego_banner' as type_, 1152969 as session_id
  union all select parse_datetime('%Y-%m-%d %H:%M:%S','2022-09-23 19:58:00') as hitsTime, 'lego_banner' as type_, 1152969 as session_id
),
t2 as (
  select parse_datetime('%Y-%m-%d %H:%M:%S','2022-09-23 19:47:02') as hitsTime, 1152969 as session_id, 378299 as cart_id
  union all select parse_datetime('%Y-%m-%d %H:%M:%S','2022-09-23 19:20:35') as hitsTime, 1152969 as session_id, 304438 as cart_id
  union all select parse_datetime('%Y-%m-%d %H:%M:%S','2022-09-23 19:27:25') as hitsTime, 1152969 as session_id, 304470 as cart_id
  union all select parse_datetime('%Y-%m-%d %H:%M:%S','2022-09-23 19:27:25') as hitsTime, 1152969 as session_id, 304495 as cart_id
),

t3 as
(select t1.hitsTime, min(t1.hitsTime) over (partition by t1.session_id, t2.cart_id) as hitmin ,t1.session_id,t2.cart_id, t1.type_
from t1 inner join  t2 on t2.hitsTime > t1.hitsTime
and t1.session_id = t2.session_id)

select session_id, cart_id, type_
from t3
where t3.hitsTime = hitmin

输出:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73861177

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档