2015-09-24 74 views
0

我使用Hive 1.2.1一些關鍵領域的獨特行和想選擇基於EMPID蜂巢 - 選擇基於

empid empname dept 
101 aaaa  dept1 
101 aaaa  dept2 
102 bbbb  dept1 
103 cccc  dept2 

我嘗試使用相關子查詢的唯一行,但不工作

select empid, 
     empname, 
    dept 
     (select count(*) 
     from emp t2 
     where t2.empid = t1.empid) as row_number 
from emp t1 where row_number=1 
order by empid; 

有沒有基於某個關鍵字段選擇唯一值的方法?需要你的幫助..

預計產出將是

empid empname dept 
101 aaaa  dept1 
102 bbbb  dept1 
103 cccc  dept2 

感謝。

+0

你能不能提供預期的輸出? – alexeipab

+0

我編輯了我的問題,增加了預期的輸出。 – Ajay

+0

可能的解決方案之一是'empid;'選擇empid,max(empname)作爲empname1,max(dept)作爲dept1來自emp組。我的實際表有大量的列,不想使用上面的sql。 – Ajay

回答

1

如果你需要每唯一鍵單行,比你可以使用ROW_NUMBER():

select empid, empname, dept from (
select row_number() over (partition by empid order by empname , dept) as rowNum, empid, empname, dept from table 
) q where rowNum == 1 
+0

上面的查詢工作正常,但我們需要給表別名... – Ajay

+0

謝謝...從哪個版本Hive開始支持分區?你有這個鏈接嗎? – Ajay

+0

從內存中寫入查詢,更新答案。看起來從Hive 0.11開始,我發現的唯一鏈接是https://cwiki.apache.org/confluence/display/Hive/LanguageManual+WindowingAndAnalytics – alexeipab