用sql检查数据是否连续

数据格式:每个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

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值