Моя таблица:
CREATE TABLE `beer`.`matches` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`hashId` int(10) unsigned NOT NULL,
`ruleId` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
Если хэш соответствует правилу, в этой таблице есть запись.
1) Подсчитайте, сколько hashIds существует для каждого уникального правилаId (AKA), сколько хэшей соответствует каждому правилу)
SELECT COUNT(*), ruleId FROM `beer`.`matches` GROUP BY ruleId ORDER BY COUNT(*)
2) Выберите 10 лучших правил (ruleIds), то есть выберите 10 правил, которые в совокупности совпадают с наибольшим количеством уникальных хэшей. Это означает, что правило, которое соответствует множеству хэшей, не обязательно является хорошим правилом, если другое правило охватывает все те же хэши. В основном я хочу выбрать 10 правил, которые поймают самые уникальные хэш-листы.
?
РЕДАКТИРОВАТЬ: В принципе у меня есть субоптимальное решение в PHP/SQL здесь, но в зависимости от данных это не обязательно дает мне лучший ответ на вопрос 2). Меня бы заинтересовало лучшее решение. Читайте комментарии для получения дополнительной информации.