【问题标题】:hive : select row with column having maximum value without join蜂巢:选择具有最大值的列而不连接的行
【发布时间】:2015-01-22 03:15:30
【问题描述】:

在表上编写 hive 查询以选择列中具有最大值的行 例如有以下数据的表:

key    value    updated_at
  1    "a"      1  
  1    "b"      2  
  1    "c"      3

需要选择最后更新的行。 目前使用以下逻辑

select tab1.* from table_name tab1
join select tab2.key , max(tab2.updated_at) as max_updated from table_name tab2
on tab1.key=tab2.key and tab1.updated_at = tab2.max_updated;

还有其他更好的方法吗?

【问题讨论】:

  • updated_at 的值在该表中是否唯一?
  • 另外,您使用的是哪个版本的 Hive?您发布的查询对我来说似乎不是有效的 HiveQL。

标签: hadoop hive hiveql


【解决方案1】:

如果updated_at 确实对于该表是唯一的,那么以下可能是一种更简单的方法来获取所需内容:

-- I'm using Hive 0.13.0
SELECT * FROM table_name ORDER BY updated_at DESC LIMIT 1;

如果 updated_at 可能由于某种原因不唯一,您可能需要调整 ORDER BY 逻辑以按照您希望的方式打破任何联系。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-23
    • 1970-01-01
    • 2015-05-15
    • 2013-08-15
    • 2021-09-12
    相关资源
    最近更新 更多