Select SQL 从另一个 select 中填充缺失值的查询
Select SQL query that fill the missing value from another select
我有 table 用户 1 :
id |date
1 2018-01-01
2 null
3 2018-01-01
4 null
和另一个 table 用户 2:
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 查询,select 来自 table user1 的 ID 和日期,但是如果日期字段为空,那么它将采用最小 date_buy 为该用户填写缺失的部分。
所以我的第一个想法是:
- 对第一个 table 进行简单查询
SELECT id, 来自用户1的日期
第二个简单查询table
SELECT id, min(date_buy) as date from user2 group by id
联合两个查询并区分日期不为空的地方
给出类似的东西:
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
但我很难塑造它并使其发挥作用。
在 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;
这应该有效
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;
我有 table 用户 1 :
id |date
1 2018-01-01
2 null
3 2018-01-01
4 null
和另一个 table 用户 2:
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 查询,select 来自 table user1 的 ID 和日期,但是如果日期字段为空,那么它将采用最小 date_buy 为该用户填写缺失的部分。
所以我的第一个想法是: - 对第一个 table 进行简单查询 SELECT id, 来自用户1的日期
第二个简单查询table SELECT id, min(date_buy) as date from user2 group by id
联合两个查询并区分日期不为空的地方
给出类似的东西:
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
但我很难塑造它并使其发挥作用。
在 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;
这应该有效
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;