蜂巢-如何计算groupby中的所有记录在特定列中是否具有相同的值?

时间:2018-06-28 08:23:36

标签: hive hiveql

我正在按记录对记录进行分组。我想知道所有这些记录在另一列中是否具有相同的值。

到目前为止,我通过以下逻辑实现了这一目标,我认为这太复杂了:

select number,
       if(flagSum = 0 OR flagSum = groupedrecords, "AllSame", "SomeDifferent") as AllIndicatorEqual
from
(select number,
       sum(if(flag = 'Y', 1, 0)) as flagSum,
       count(*) as groupedrecords
from table
where number = '1234' 
group by number
)tab

因此,基本上我将number分组,然后检查是否所有分组的记录都具有相同的flag值。

有没有更有效的方法来计算这个?

1 个答案:

答案 0 :(得分:0)

您可以通过使用不同的计数来跳过子查询:

select 
  number, 
  if(count(distinct flag) = 1, "AllSame", "SomeDifferent") as AllIndicatorEqual 
from table
group by number;

http://sqlfiddle.com/#!9/20e024/6