如何使用配置单元选择重复ID的最小值

时间:2017-05-12 20:30:51

标签: hadoop hive

有人可以帮我解决这个问题。

我有这样的数据

**id,age,name**
10,25,abc
10,35,def
20,45,ghi
20,55,jkl
20,65,mno
30,40,pqr
30,50,stu
30,70,vwr
40,20,yza
40,25,fdf
40,25,dgh
40,20,sfs

现在我想得到最终结果如下

+------+------+
| id   | age  |
+------+------+
|   10 |   25 |
|   20 |   45 |
|   30 |   40 |
|   40 |   20 |
|   40 |   20 |
+------+------+

我能够在mysql中执行此操作但由于hive不支持子查询中的多个参数,因此我无法在hive中获得所需的结果。

我尝试使用hive join这样做,但没有成功。

提前感谢您的帮助!!

2 个答案:

答案 0 :(得分:0)

实现预期输出的其他方式。

SELECT id,
       age
FROM
  (SELECT id,
          age
   FROM tblname) a LEFT SEMI
JOIN
  (SELECT id,
          MIN(age) age
   FROM tblName
   GROUP BY id) b ON a.id=b.id
AND a.age=b.age

答案 1 :(得分:0)

select  id
       ,age

from   (select  id
               ,age

               ,rank () over 
                (
                    partition by    id 
                    order by        age
                ) as rnk

        from    mytable
        ) t

where   t.rnk = 1
+----+-----+
| id | age |
+----+-----+
| 10 |  25 |
| 20 |  45 |
| 30 |  40 |
| 40 |  20 |
| 40 |  20 |
+----+-----+