через большинство частот в почтовом индексе, сначала вам нужно предварительно запросить запрос, а затем сопоставить этот счет ... в основном делая тройной процесс против таблицы.
Третий уровень в псевдониме (QPerClass) получает по каждому почтовому индексу, каждому классу и соответствующим подсчетам. Максимальное количество классификаций 3 в одном почтовом индексе vs count 5 в другом - это две отдельные вещи, и вы не хотите, чтобы общий наиболее популярный счет 5, если у такого другого почтового кода только 3, он никогда не найдет соответствующее совпадение.
Таким образом, согласно вашим данным выборки, это приведет к
PostCode Class Count
1111AA A 2
1111AA B 1
1111AB C 2
1111AB A 1
От этого нам нужно максимально допустимого числа каждого почтового индекса, но вы не можете получить класс, связанный с ним, как, которые вы не можете скажу захватить класс с максимальным колом, и вы не можете сделать ограничение-за почтовый индекс .. это привело бы к
1111AA 2
1111AB 2
Теперь, когда у вас есть счет за почтовый индекс, присоединиться к этому к исходной таблице и применить группа с AND a, имеющая так, что значение HAVING COUNT (*) на внешнем уровне соответствует счету MAX(), как определенных на втором этапе.
select
pc.postCode,
pc.class,
MaxPostByCode.MaxCount
from
PostalCodes pc
JOIN (select QPerClass.postCode,
max(QPerClass.perClassCount) MaxCount
from
(select pc2.postcode,
pc2.class,
count(*) perclassCount
from
postalcodes pc2
group by
pc2.postcode,
pc2.class) QPerClass
group by
QPerClass.postCode) MaxByPostCode
on pc.postcode = MaxByPostCode.postCode
group by
pc.postCode,
pc.class,
MaxPostByCode.MaxCount
having
count(*) = MaxPostByCode.MaxCount
Теперь, если у вас есть экземпляр, где есть несколько записей, которые имеют тот же режим (макс количество каждого класса), то вам придется обернуть его еще раз, чтобы получить MIN (CLASS), квалифицирующие предложение HAVING, сгруппированное по почтовому индексу, например
Ваше описание тихое, неопределенное. Не могли бы вы отредактировать свой пост с большей ясностью, а также макет ** Ожидаемый результат **. Итак, мы увидим, чего вы на самом деле хотите. – PaulFrancis
Выполнен макет ожидаемого выхода. Очевидно, что с большим набором данных было бы трудно сделать это вручную, поэтому, если это возможно, есть ли какая-то симуляторная функция, которую я мог бы использовать? –
По-прежнему неясны с описанием бит. Почему 1111AA | B не в результате? Почему 1111AB | А не в результате тоже? – PaulFrancis