数据格式:每个ID每天有一条数据,每天可能有新ID数据,也可能有ID不再有数据
实现要求:检查每个ID的数据在某时间段内是否连续
解决思路:查出每个ID出现的最早日期和最晚日期,日期相减,如果与数据数一致,则说明连续,否则说明不连续。示例SQL如下:
select mindate,maxdate,difday - cnt cnt,COUNT(*) subcnt
from (
select id,COUNT(*) cnt, MAX(d_date) maxdate,MIN(d_date) mindate,DATEDIFF(DAY,min(d_date),max(d_date))+1 difday
from T_data
where d_date >='$check_date' and d_date<getdate()
group by id
) a
where cnt != difday and mindate<>maxdate
group by cnt,mindate,maxdate,difday
order by mindate,maxdate
PS:数据库为sqlserver