Mysql集群查询

时间:2012-03-23 02:10:09

标签: mysql sql

我有一张如下表格:

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

我必须计算具有相同前两位数的ID组的数量,并且输出是一致的。 例如在这种情况下 01ABC1,01ABC2 and 01ABC3具有相同的输出,但02ABC1,02ABC2 and 02ABC3没有。 所以答案将是1设置。

输出应为

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

3 个答案:

答案 0 :(得分:2)

如果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

答案 1 :(得分:0)

这对你有用。如果没有,我相信我们可以为你调整它。

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
;

答案 2 :(得分:0)

从table_name GROUP BY left(id,2)中选择id,count(distinct output),group_concat(distinct output)。 和输出是你想要的。假设2为0。