我有一个约200万行的表,已经过一段时间的处理(每次100个),并根据调查结果在活动列中标记为1。
现在处理已经完成,我想确定一种查看该数据的方法,并找到该列仍然设置为0的任何大批量(表示处理中某个时刻出现故障)。
我有一个id
列,顺序为1到2百万,活动列设置为0或1的几率大约为50/50(因此,任何批次的100+零肯定会是异常的。)
目标是能够向我指出:'嘿,从id = 500000开始连续出现2000条记录,活动列设置为0' 。由于手动查看它几乎是不可能的。
答案 0 :(得分:2)
您可以将变量用于此目的:
select grp, min(id), max(id), active, count(*)
from (select t.*,
(@grp := if(@a = active, @grp,
if(@a := active, @grp + 1, @grp + 1)
)
) as grp
from t cross join
(select @z := -1, @grp := 0) params
order by id
) t
where active = 0
group by grp, active
order by count(*) desc;