如何使用SQL在给定的时间窗口内对事件时间进行排名?

约瑟夫

我正在努力寻找一种使用SQL对事件进行排名的方法。目标是每当事件比delta上一次观察超过秒(例如1秒)时,就增加排名到目前为止,我的尝试如下所示:

select a.event_time, a.user_name, a.object_name, a.rnk, case when a.ddif <= 1000 then 0 else 1 end as new_query,
            case when a.ddif <= 1000 then 0 else rnk end as new_rnk
from (
    select *, rank() OVER (PARTITION BY user_name ORDER BY event_time) AS rnk,
              date_diff('second',lag(event_time) OVER (PARTITION BY user_name ORDER BY event_time),event_time) as ddif
    from tmp
    ) a

但这只给了我以下结果,而我仍然不知道如何获得结果yellow(它们中的任何一个对我来说都是完美的)。

在此处输入图片说明

我将不胜感激。

请注意:我正在使用Presto DB,因此我仅限于此查询引擎。

约瑟夫

感谢所有为我指出最终解决方案的方向的好技巧:

select a.*, sum (case when a.ddif <= 1 then 0 else 1 end) over (partition by user_name order by event_time) as acc_rnk
    from (
        select *, date_diff('second',lag(event_time) OVER (PARTITION BY user_name ORDER BY event_time),event_time) as ddif
        from tmp
        ) a

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用Spark Streaming读取流并在一个时间窗口内找到IP?

如何在给定的不规则日期上对时间序列进行重新采样

如何在给定时间使用ffmpeg提取视频的1个屏幕截图?

在给定的时间(或间隔)后,如何刷新jsp页面?

Python:如何在特定时间窗口内对熊猫数据框进行分组?

如何在Spark群组中的滚动时间窗口内进行汇总

如何在给定的预定时间自动在Facebook页面上发布更新?使用Android

如何在给定的时间开始播放视频?

在给定间隔内使用ifelse()语句进行日期时间观察

如何在RXJS 5+中按时间有效地对事件进行分组

SparkR。SQL。使用时间戳在滚动时间窗口内计数满足条件的记录

如何安排python脚本在给定时间退出

如何查找日期是否在给定的时间间隔内

使用UI在给定时间停止或运行Docker容器

如何在Apache光束的时间窗口内对元素进行计数,并在计数达到某个阈值时发出数据?

用SQL查找在给定时间哪些餐厅营业?

使用Rails如何在给定时间内查找用户预订的课程

如何配置Ubuntu在给定时间每天重启?

如何在给定的时间开始/停止传输?

如何在给定时间处理(动态添加)项目?

在给定时间在SQL中获取最小值

如何让groupby每天在给定时间开始计算秒数?

如何获取时间窗口内的最新值

如何在给定时间之前计算小时数

如何过滤时间窗口内最近发生的事件?

如何在C中使用while循环在给定时间内运行

SQL:如果数据在时间窗口内显示,则返回值

如何检查 input() 是否在给定的时间间隔内?

如何使用moment.js检查时间是否在给定范围之间?