【发布时间】:2017-12-17 01:04:53
【问题描述】:
假设我在 Athena 中有以下数据:
id ts
uid1 1499672134268
uid1 1499672134292
uid1 1499672136189
uid1 1499672136212
uid1 1499719927907
uid1 1499719927940
uid1 1499719927975
uid1 1499719927999
uid2 1499670000000
uid2 1499670000010
uid2 1499688880010
我想这样排名:
rank id ts
1 uid1 1499672134268
1 uid1 1499672134292
1 uid1 1499672136189
1 uid1 1499672136212
2 uid1 1499719927907
2 uid1 1499719927940
2 uid1 1499719927975
2 uid1 1499719927999
1 uid2 1499670000000
1 uid2 1499670000010
2 uid2 1499688880010
逻辑是:
第二组最小值与第一组最大值之差大于x
我认为dense_rank() OVER (PARTITION BY id ... ) 的某种组合可以解决它,但我是 SQL 中窗口函数的新手。
谢谢
【问题讨论】:
-
在这个例子中
x是什么?如果与之前的 ts > x 的差异,您的意思是重置组吗? -
没错,x只是某个阈值
-
使用数据样本阐明逻辑。您的帖子定义与您对@vkp 的回复不匹配
标签: sql amazon-web-services window-functions amazon-athena presto