簡體   English   中英

從配置單元表中選擇具有給定條件的重復項的記錄

[英]selecting records from hive table where there are duplicates with a given criteria

在此處輸入圖片說明

表1在A列中具有相同頻率值的重復條目。 我需要從這些記錄中選擇一個隨機記錄。如果重復條目包含“未知”作為B列值(如記錄“ d”中),請從其他行中選擇一個。 我需要滿足上述條件的選擇語句。 謝謝 。

這些條件可以使用優先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

在這里,對於每組A行,我們首先對B = 'unknown'以外的行進行優先級排序,然后對B值進行排序。

使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM