选择sql查询,用于填充另一个select中缺少的值

epggiuax  于 2021-06-25  发布在  Hive
关注(0)|答案(2)|浏览(355)

我有user1表:

id |date
1   2018-01-01    
2   null   
3   2018-01-01    
4   null

另一个表user2:

id |date_buy
1   2018-01-01    
1   2018-01-02    
2   2018-01-01    
2   2018-01-02    
3   2018-01-01    
4   2018-01-01

我想做一个select查询,从表user1中选择id和日期,但是如果date字段为空,那么它将取这个用户购买的最小日期,并用它填充缺少的日期。
所以我的第一个想法是:-对第一个表select id,date from user1进行简单查询
在第二个表上做一个简单的查询,选择id,min(date\u buy)作为user2 group by id的日期
将这两个查询合并,并在date不为null的情况下进行区分
它给出了类似于:

SELECT distinct id, date 
from (SELECT id, date 
      from user1 
      UNION 
      select id, min(date_buy) as date 
      from user2 group by id) 
 where date is not null

但我很难塑造这一点,让它发挥作用。

hxzsmxv2

hxzsmxv21#

这应该管用

select u1.id,COALESCE(u1.date, u2.min_dt) from user1 as u1 
    join 
    ( select id,MIN(date_buy) as min_dt from user2 group by id
    ) as u2 
    on u1.id=u2.id;
dxpyg8gm

dxpyg8gm2#

在 hive 里,我想我会:

select u1.id, coalesce(u1.date, u2.min_date)
from user1 u1 left join
     (select id, min(date_buy) as min_date
      from user2
      group by id
     ) u2
     on u1.id = u2.id;

相关问题