我有一个有两个cloumns的hive表,我想得到最多次出现的值
例如在我的下表中,一个值出现两次,c只出现一次,这里的值是dominat所以我只想要一个值,如输出
col1 col2
a a_value1
a a_value2
a c_value3
b b_value1
输出:
col1 col2
a a_value1
b b_value1
答案 0 :(得分:1)
您正在寻找统计人员称之为模式的内容。一个非常简单的方法是使用带窗函数的聚合:
select col1, col2
from (select col1, col2, count(*) as cnt,
row_number() over (partition by col1 order by count(*) desc) as seqnum
from t
) t
where seqnum = 1;
上述查询将为每个col1
返回一个值,即使存在关联。如果您想要关系中的所有值,请使用rank()
或dense_rank()
。