zoukankan      html  css  js  c++  java
  • [SQL]连续三天有销售额

    店铺       销售日期    销售额
    
    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,并筛选出店铺名称即可。

                  
    申明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    仿造email后缀自动添加功能(1)
    仿造email后缀搜索功能(2)
    取出input内的空格
    小知识点
    关于闭包
    js清除浏览器缓存的几种方法
    动态生成模板(模板生成器)
    安卓端调用h5界面js方法和ios端调用h5界面js方法
    linux 命令
    如何做个好员工
  • 原文地址:https://www.cnblogs.com/lsyb-python/p/11083828.html
Copyright © 2011-2022 走看看