Улей - Как рассчитать, если все записи внутри группы имеют одинаковое значение в определенном столбце? - PullRequest
0 голосов
/ 28 июня 2018

Я группирую по базе записей по одному столбцу. Что я хочу знать, если все эти записи имеют одинаковое значение в другом столбце.

Пока я достигаю этого с помощью следующей логики, которая, на мой взгляд, слишком сложна:

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 голосов
/ 29 июня 2018

Вероятно, вы можете пропустить подзапрос, используя различное количество:

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...