MySQL кластеризация запроса - PullRequest
0 голосов
/ 23 марта 2012

У меня есть таблица, подобная следующей:

ID                Output
-------------------------
01ABC1            AB
01ABC2            AB
01ABC3            AB
02ABC1            AC
02ABC2            AC
02ABC3            AB

Я должен посчитать количество наборов идентификаторов, которые имеют одинаковые первые две цифры, и вывод соответствует. Например, в этом случае 01ABC1,01ABC2 and 01ABC3 имеет тот же вывод, но 02ABC1,02ABC2 and 02ABC3 - нет. Таким образом, ответ будет 1 установлен.

Вывод должен быть

ID                Count(ID)
---------------------------    
01ABC            1
02ABC            0

Ответы [ 3 ]

2 голосов
/ 23 марта 2012

Если под consistent вы подразумеваете all the outputs are the same for a given set of ids that share the same first 2 digits, то этот запрос выполнит работу:

select count(*) from (
    select count(distinct output) aCount from t
    group by left(id, 2)
    having aCount = 1
) final

PS: Вы отредактировали свой вопрос.Эти ответы отвечают вашему второму редактированию ... с ожидаемым результатом:

The output should be
    Count(ID)
    1
0 голосов
/ 23 марта 2012

выберите id, count (отдельный вывод), group_concat (отличный вывод) из table_name GROUP BY left (id, 2).и вывод, как вы хотите. Просто примите 2 как 0.

0 голосов
/ 23 марта 2012

Это должно работать для вас.Если нет, я уверен, что мы можем настроить его для вас.

SELECT count(*) FROM
(
SELECT count(*), digits, Output FROM
(SELECT SUBSTRING(ID, 1, 2) AS digits, Output from `table` GROUP BY 1, 2) AS sub_groups
GROUP BY digits HAVING COUNT(*) = 1
) AS sets
;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...