HIV BY中的GROUP BY和JOIN

时间:2015-06-17 16:47:54

标签: mysql hadoop hive

我怎样才能在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

2 个答案:

答案 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();