我正在按记录对记录进行分组。我想知道所有这些记录在另一列中是否具有相同的值。
到目前为止,我通过以下逻辑实现了这一目标,我认为这太复杂了:
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
值。
有没有更有效的方法来计算这个?
答案 0 :(得分:0)
您可以通过使用不同的计数来跳过子查询:
select
number,
if(count(distinct flag) = 1, "AllSame", "SomeDifferent") as AllIndicatorEqual
from table
group by number;