我有一张简单的桌子:
UserID EventTimestamp
... ...
用户可以有任意数量的事件(从无到多)。我需要运行一个HiveQL查询来提取第三个事件的时间戳(按升序)。少于3个事件将导致空。
有没有不需要使用UDF模拟rank()的解决方案?
最佳答案
如果可以使用MySQL查询,则可以使用以下内容:
SELECT
e1.UserID,
MIN(e3.EventTimestamp) ThirdTimestamp
FROM
Events e1 LEFT JOIN Events e2
ON e1.UserID=e2.UserID and e1.EventTimestamp<e2.EventTimestamp
LEFT JOIN Events e3
ON e1.UserID=e3.UserID and e2.EventTimestamp<e3.EventTimestamp
GROUP BY
UserID
小提琴here。
关于mysql - HiveQL:在一对多表中查找第N个值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16279665/