我有一张简单的桌子:

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/

10-16 03:02