美文网首页
sql 查询时间段,有数据的显示出来,没有数据的补充0

sql 查询时间段,有数据的显示出来,没有数据的补充0

作者: 苦茶般人生 | 来源:发表于2021-07-01 11:07 被阅读0次

    对于这个问题,网上找了很多示例,绝大部分都是 依赖于创建的时间表然后进行外连接解决

    废话不多说,上demo

    1.数据库中选择任意一个有数据的表,例如我选择的是 ak_customer表

    ```

    SELECT     @cdate := DATE_ADD( @cdate, INTERVAL - 1 DAY ) date,   0 AS day_count

    FROM     ( SELECT @cdate := DATE_ADD( CURDATE( ), INTERVAL - 10 DAY ) FROM ak_customer ) t1  WHERE    @cdate > '2021-06-03'

    ```

    查询结果如下:

    选择一统计时间开始时间,我的开始时间选择的是2021-06-03,结束时间默认是当前日期。

    2.将自己要统计的数据,按我们自己的要求写出来,当然此时,肯定显示的都是有数据的记录统计结果: 

    ```

    select DATE_FORMAT( create_time, '%Y-%m-%d' ) AS date ,COUNT(*) as day_count

    from ak_customer group by date

    ```

    查询结果如下:

    此时没有记录的时间,就没有展示在结果中。

    3.联合查询将没有记录的时间补0

    ```

    select date,Max(day_count) day_count from (

    SELECT

        @cdate := DATE_ADD( @cdate, INTERVAL - 1 DAY ) date,

        0 AS day_count

    FROM

        ( SELECT @cdate := DATE_ADD( CURDATE( ), INTERVAL - 10 DAY ) FROM ak_customer ) t1

    WHERE

        @cdate > '2021-06-03'  union

    select * from (

        select DATE_FORMAT( create_time, '%Y-%m-%d' ) AS date ,COUNT(*) as day_count

        from ak_customer  group by date

        )t2

    ) a GROUP BY date ASC

    ```

    查询结果如下:

    上面要求1、2 的记录条数字段名字一样,我选择的都是 day_count 结果就是没有数据的时间补上数据0了

    总结:当然还有别的方法,不过这个方法不用创建任何的存储过程,是相对来说简单一点的

    相关文章

      网友评论

          本文标题:sql 查询时间段,有数据的显示出来,没有数据的补充0

          本文链接:https://www.haomeiwen.com/subject/qgrjultx.html