我有一张如下表格:
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
答案 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。