标志,大小写

yzckvree  于 2021-06-24  发布在  Hive
关注(0)|答案(2)|浏览(606)

我有一个名为“test”的表,其中包含以下列:

如果click=1和impression=1,那么我试图基于相同的lead\u id进行标记,因为每个事件(click或impression)由于发生日期不同而被捕获在单独的行中,因此可以跨多行复制,然后将其标记为1。
我有:

select click, imp, lead_id,
    case 
    when count(distinct lead_id) >1 and (click=1 and imp = 1) 
    then 1 
    else 0 
    end as flag
    from test
    group by click, imp, lead_id;

所需输出:

所以这个标志只标记lead\ id 001,因为它有一个click和imp,在不同的日期。

dba5bblo

dba5bblo1#

使用如下分析函数:

select click, imp, lead_id, 
       case when sum(click) over (partition by lead_id) > 0
                 and sum(imp) over (partition by lead_id) > 0   
           then 1  
           else 0  
       end as flag 
  from test ;
lf5gs5x2

lf5gs5x22#

获得最大值 click 以及 imp 在每个分区中 lead_id . 如果它们等于1,就把它们标起来。这应该比对每个分区求和稍微有效一些。

select 
    *, 
    case when max(click) over (partition by lead_id) = 1 and
              max(imp) over (partition by lead_id) = 1
         then 1
         else 0
         end as flag
from test;

相关问题