hadoop—从配置单元表中选择记录,其中存在具有给定条件的重复项

dxpyg8gm  于 2021-05-31  发布在  Hadoop
关注(0)|答案(2)|浏览(347)


表1在a列中有重复的条目,它们的频率值相同。我需要从这些记录中随机选择一个记录。如果重复项包含“未知”作为b列值(如记录“d”)请从其他行中选择一个。我需要一个select语句来满足上述条件。谢谢。

izj3ouym

izj3ouym1#

这些条件可以使用 case 中的表达式 order by 函数如下 row_number .

select A,B,frequency,timekey
from (select t.*
            ,row_number() over(partition by A order by cast((B = 'unknown') as int), B) as rnum
      from tbl t
     ) t 
where rnum = 1

在这里,对于每一组行,我们对除 B = 'unknown' 先是,然后是 B 价值观。

zdwk9cvp

zdwk9cvp2#

使用 row_number 解析函数。如果要选择“不” unknown 先录制,然后使用以下查询:

select  A, B, Frequency, timekey
from
(select 
       A, B, Frequency, timekey,
       row_number() over(partition by A,Frequency order by case when B='unknown' then 1 else 0 end) rn
)s where rn=1

如果你想选择 unknown 如果它们存在,就用这个 row_number 在上面的查询中:

row_number() over(partition by A,Frequency order by case when B='unknown' then 0 else 1 end) rn

相关问题