2017-12-01 1 views
0

에서이 같은 테이블이 있습니다고유 최대 하이브

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 

누구든지 방법을 알고를 독특한 최대치를 얻으시겠습니까?

내 DB 당신은 가까웠다

+0

당신이'그룹 by'를 사용해야합니다. –

답변

0

하이브입니다. 쿼리의이 조각은

또한 언급 한 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