我有一个名为“ Scan”的客户交易记录表,其中对每个不同的交易均显示一次personal_id,并包含诸如scan_id之类的列。我还有另一个名为ids的表,该表包含从Scan Table
中采样的随机personal_ids我想将ids与scan结合在一起,并获得ID和scan_id的单个记录(如果它与某些值匹配)。
假设数据如下
扫描表
Ids scan_id
---- ------
1 100
1 111
1 1000
2 100
2 111
3 124
4 1000
4 111
Ids table
id
1
2
3
4
5
我想要在输出下面,即,如果scan_id与100或1000相匹配
Id MT
------ ------
1 1
2 1
3 0
4 1
我在下面的查询中执行并出现错误
select MT, d.individual_id
from
(
select
CASE
when scan_id in (90069421,53971306,90068594,136739913,195308160) then 1
ELSE 0
END as MT
from scan cs join ids r
on cs.individual_id = r.individual_id
where
base_div_nbr =1
and
country_code ='US'
and
retail_channel_code=1
and visit_date between '2019-01-01' and '2019-12-31'
) as d
group by individual_id;
我将很高兴与此Hive查询有关的任何建议或帮助。是否有一种有效的方法来完成这项工作。让我知道。
使用group by
:
select s.individual_id,
max(case when s.scan_id in (100, 1000) then 1 else 0 end) as mt
from scan s
group by s.individual_id;
此查询似乎不需要ids
表。