查询三十天内,count()是否大于1
select 车牌 from 表名 where ...group by 车牌 having count(车牌)>1
这题问法有问题,搞得好像是要用机器学习算法预测未来一样。。。
我猜题主是想问,如何查询历史的两次维修间隔在30天以内的车。
楼上专家这解法只能针对固定的日期段,而题主的开始时间是不确定的。
如果是使用mysql8.0版本,可以使用开窗函数,把移动窗口的范围限定在30天,统计窗口内的记录数是否大于1就好了。
还可以使用开窗函数的lead或者lag来取上一个值或者下一个值来判断是否间隔小于30天。
然后8.0版本使用with as的递归sql也能实现。
但是,如果是8版本以下,那就麻烦了,可能还得写个过程,需要用循环,去模拟30天范围的移动窗口,比如
第一次查20210101-20210130,
第二次查20210102-20210131,
第三次查20210103-20210201
...