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

                  
    申明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    JS判断浏览器类型及版本
    php函数ob_start()、ob_end_clean()、ob_get_contents()
    HTML-embed标签详解
    QQ一键登录功能的实现过程
    windows 7系统搭建本地SVN服务器的过程
    php 环境工具官网地址
    yii2 auth access-token
    使用Yii2时遇到的实际问题
    PHPExcel正确读取excel表格时间单元格(转载)
    持续集成 Jenkins
  • 原文地址:https://www.cnblogs.com/lsyb-python/p/11083828.html
Copyright © 2020-2023  润新知