<span>[SQL]连续三天有销售额</span>

店铺       销售日期    销售额

A        2017-10-11    300
A        2017-10-12    200
B        2017-10-11    400
B        2017-10-12    200
A        2017-10-13    100
A        2017-10-15    100
C        2017-10-11    350
C        2017-10-15    400
C        2017-10-16    200
D        2017-10-13    500
E        2017-10-14    600
E        2017-10-15    500
D        2017-10-14    600
B        2017-10-13    300
C        2017-10-17    100

需求是:求出连续三天有销售记录的店铺。

解法:

  寻找每个店铺是否连续三天都有销售额,利用现有的表,构造一个中间表,中间表既有当前日期的销售额,又有当前日期后两天的销售额,然后筛选销售额大于0的店铺的名称即可:

 

SELECT a.Name FROM sales a 
LEFT JOIN sales b
on a.name = b.name and
DATEDIFF(STR_TO_DATE(b.day,'%Y-%m-%d'),STR_TO_DATE(a.day,'%Y-%m-%d')) = 1
LEFT JOIN sales c
on b.name = c.name AND
DATEDIFF(STR_TO_DATE(c.day,'%Y-%m-%d'),STR_TO_DATE(b.day,'%Y-%m-%d')) = 1
WHERE a.amount > 0 AND b.amount > 0 AND c.amount > 0;

 

  可以看到需要借助str_to_date和datediff函数处理日期的差值,每一条记录相邻两个日期在天数上依次添加1,不满足这样条件的为null值。我们在此基础上增加where条件过滤amount>0,并筛选出店铺名称即可。

全部评论

相关推荐

不愿透露姓名的神秘牛友
11-21 11:29
已编辑
斯卡蒂味的鱼汤:知道你不会来数马,就不捞你😂最近数马疯狂扩招,招聘要求挺低的,你能力肯定够,应该就是因为太强了,知道你不会来才不捞你
投递腾讯云智研发等公司7个岗位
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务