首页 > 数据库技术 > 详细

[SQL]连续三天有销售额

时间:2019-06-25 17:32:00      阅读:268      评论:0      收藏:0      [点我收藏+]
店铺       销售日期    销售额

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,并筛选出店铺名称即可:

关于文章引用:https://mp.weixin.qq.com/s?__biz=MzU5MjI3NzIxMw==&mid=2247486179&idx=2&sn=b002722de15d0542a33fd1a41bcabec8&chksm=fe237151c954f8477e396d9b6c2a45b5dc4a92788d0d2cbec6b7f21ed2c80b1a1a3a07d55b0e&mpshare=1&scene=1&srcid=&key=a11896b1737ea6e6a0a05f6360e0207e66c9a58dedbbb2c0a4fd1f0f7378e69186aed776cd6c0a1f93f79545176b50a9c021dd4160208ed5ce72b7c650455e73fa0932691906f91621ed280b9db5ce8d&ascene=1&uin=MTgwMzA2NjQ2Mg%3D%3D&devicetype=Windows+10&version=62060833&lang=zh_CN&pass_ticket=UxtK8usN6lata4WwfKr54yhgRAhC4klkPycWcUeMj0vWXz6Cm6bwHx%2BZFgiaG4hB

 

[SQL]连续三天有销售额

原文:https://www.cnblogs.com/lsyb-python/p/11083828.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!