mysql如何查询某个店铺连续三天>=100的数据

项目场景:

提示:这里简述项目相关背景:

例如:项目需要查询各个店铺连续3天销量>=100的数据


思路分析:


1.单表查出所需要的店铺、日期字段

select AIRS_NO,GROUND_DATE from ground_job where model = '某36' and sj_num = 1 GROUP BY AIRS_NO,GROUND_DATE

在这里插入图片描述
2.根据AIRS_NO匹配,相同数字+1,不同为1。用(t1.GROUND_DATE-t1.rk)相同则为相邻日期。

select t1.AIRS_NO,t1.GROUND_DATE,t1.ground_context,t1.rk,t1.GROUND_DATE-t1.rk as dis from (
select @rk:=case when @dept=a.AIRS_NO then @rk+1 else 1 end as rk,@dept:=a.AIRS_NO as dept,a.GROUND_DATE,a.AIRS_NO,a.ground_context from ground_job a,
(select @rk:=1,@dept:='' ) as b where a.model = '某36' and a.sj_num = 1 and LEFT(a.GROUND_DATE,7) = '2023-08'
             ORDER BY a.AIRS_NO,a.GROUND_DATE
)	t1 

![在这里插入图片描述](https://img-blog.csdnimg.cn/97955abde3fc445593fffeb975e1b04e.png

解决方案:

3.根据(t1.GROUND_DATE-t1.rk)数据分组,并用COUNT(t1.GROUND_DATE-t1.rk) 查询相同的个数

select t1.AIRS_NO,t1.GROUND_DATE,t1.ground_context,t1.GROUND_DATE-t1.rk as dis,COUNT(t1.GROUND_DATE-t1.rk) as count from (
select @rk:=case when @dept=a.AIRS_NO then @rk+1 else 1 end as rk,@dept:=a.AIRS_NO as dept,a.GROUND_DATE,a.AIRS_NO,a.ground_context from ground_job a,
(select @rk:=1,@dept:='' ) as b where a.model = '某36' and a.sj_num = 1 and LEFT(a.GROUND_DATE,7) = '2023-08'
             ORDER BY a.AIRS_NO,a.GROUND_DATE
)	t1 GROUP BY t1.GROUND_DATE-t1.rk

在这里插入图片描述
4.用list集合过滤即可

List<GroundJobCountVo> collect = otherList.stream().filter(o -> o.getCount() >= 3).collect(Collectors.toList());
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值