Hiveql查找地址为null并填写地址

问题描述 投票:0回答:1

我是sql / hql的新手。

我正在使用下面的hive表来构建逻辑,如下所述:

Card_ID  Mid      Address                
------   -----   ---------------           
1000     201     MG Road,bangalore      
1000     301     MG Road,bangalore       
1000     401     null 
1000     501     null

2000     205     Plot # 5, Indira Nagar, Delhi

2000     305     Plot # 5, Indira Nagar, Delhi             
2000     405     null

3000     109     psk road

3000     809     psk road

这是一个仅在Card_id具有多个Mid的情况下创建的临时表

需求:

  1. 识别Card_id的中间地址为null而不是null(我需要创建一个包含这组值的表,以便让我的客户审阅。所以请需要一个sql来创建此请求)
  2. 将地址列空值填入同一card_ID下的其他中间地址

期望的输出:

Card_ID  Mid      Address                
------   -----   ---------------           
1000     201     MG Road,bangalore      
1000     301     MG Road,bangalore       
1000     401     MG Road,bangalore 
1000     501     MG Road,bangalore

2000     205     Plot # 5, Indira Nagar, Delhi

2000     305     Plot # 5, Indira Nagar, Delhi             
2000     405     Plot # 5, Indira Nagar, Delhi

3000     109     psk road

3000     809     psk road

请各位帮助我按照我的理解逐步构建hql / sql,以便明天我可以将上述o / p交付给我的客户。

sql hadoop hive hiveql
1个回答
1
投票

您可以使用max()作为窗口函数:

select card_id, mid,
       max(address) over (partition by card_id)
from t;
© www.soinside.com 2019 - 2024. All rights reserved.