【问题标题】:Unique Max in HiveHive 中唯一的 Max
【发布时间】:2017-12-01 16:34:48
【问题描述】:

我有一张这样的桌子:

id         | date_r
1          | 2017-12-01
2          | 2017-12-06
1          | 2017-12-01
2          | 2017-12-03
3          | 2017-12-02

我想获取所有具有最大日期的 ID。

我做过这样的查询:

select t1.id, t2.date_r from table t1
inner join 
( select id, max(date_r) date_r_max from table group by id )t2
on t1.id=t2.id and t1.date_r=t2.date_r_max

我有这个结果:

id         | date_r
1          | 2017-12-01
2          | 2017-12-06
1          | 2017-12-01
3          | 2017-12-02

但我想要这个结果:

id         | date_r
1          | 2017-12-01
2          | 2017-12-06
3          | 2017-12-02

有人知道如何获得唯一的最大值吗?

我的数据库是 Hive

【问题讨论】:

  • 你应该使用group by

标签: sql hive


【解决方案1】:

你很亲密。当这条查询可以完成工作时,您会考虑使用 JOIN 来使事情复杂化

select id, MAX(date_r) date_r
               FROM t1 GROUP BY id;

你也提到过,

我想获取所有具有最大日期的 ID。

是这个意思吗?

SELECT id,date_r FROM t1 WHERE 
         date_r IN ( select MAX(date_r) 
                         FROM t1 GROUP BY id );

DEMO

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-06
    • 1970-01-01
    • 2016-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多