我怎样才能在HIVE中做这样的事情:
表1:
ID Name Friends
1 Tom 5
表2:
ID Name DOB
1 Jerry 10/10/1999
1 Kate Null
1 Peter 02/11/1983
1 Robert Null
1 Mitchell 09/09/2000
我想做的是:
对于表1中的每个ID,找到num not not null DOB,然后除以Friends
我写了一个查询:
SELECT t.ID, t.Friends, COUNT(s.DOB)/ t. Friends from Table1 t join Table2 s on (t.ID = s.ID) GROUP BY t.ID
当我这样做时,我得到错误,因为FRIENDS不属于GROUP BY Key
我期待的答案是:3/5
答案 0 :(得分:1)
只需将FRIENDS添加到GROUP BY部分:
SELECT t.ID, t.FRIENDS, COUNT(s.DOB)/ t. FRIENDS
from Table1 t
join Table2 s
on (t.ID = s.ID)
GROUP BY t.ID. t.FRIENDS
我更喜欢这样写这样的查询:
SELECT t.ID, case when t.FIREND>0 then Cnt / t.FRIENDS ELSE 0 END
FROM Table t1
JOIN (Select ID, Count(*) AS Cnt from Table 1 GROUP BY Id) t2
ON t1.ID = t2.ID
答案 1 :(得分:0)
如果你有声明id,表1中的朋友为整数,而table2中的id为整数,那么下面的查询将得到你想要的输出
tvAssets.ExpandAllNodes();