SQL-按日期不间断统计

一、数据库 日期数据不间断

             SELECT COUNT(1) AS count, SUM(age) AS age FROM `user`

             GROUP BY DATE_FORMAT(create_time,'%Y-%m-%d');

 

二、数据库 日期数据不连续 间断补0

             1.不创建表方式 (临时表 -- 只读库也可以创建)

             临时表 只会存在一个查询中,如果另开一个查询则会

             sql error: table doesn't exist。

 

             CREATE TEMPORARY TABLE num (i int); -- 创建临时表

             INSERT INTO num (i) VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9); -- 插入增加的天数

             select adddate('2012-09-01', num.i) as `date` from num 

             where adddate('2012-09-01', num.i) <= '2012-09-10'; -- 查询连续天数

             '2012-09-01' – 开始时间

             '2012-09-10' – 结束时间

             查询结果:

             2012-09-01

             2012-09-02

             2012-09-03

             2012-09-04

             2012-09-05

             2012-09-06

             2012-09-07

             2012-09-08

             2012-09-09

             2012-09-10

            备注: 如果需要增加连续的天数,则增加 num  改变查询的 开始 结束时间

            例: 增加num 0 - 10000;开始时间为 2010-01-01  结束时间为2018-12-31;

            1.创建表方式 (临时表 -- 只读库也可以创建)

CREATE TABLE num (i int);
INSERT INTO num (i) VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9);
CREATE TABLE  if not exists calendar(datelist date); 

INSERT INTO calendar (datelist) SELECT adddate( ( DATE_FORMAT("2018-01-01", '%Y-%m-%d') ), numlist.id ) AS `date` FROM ( 
SELECT n1.i + n10.i * 10 + n100.i * 100 + n1000.i * 1000 + n10000.i * 10000 AS id
FROM num n1 CROSS JOIN num AS n10 CROSS JOIN num AS n100 CROSS JOIN num AS n1000 CROSS JOIN num AS n10000)AS numlist;

drop table num;

            "2018-01-01" --开始时间 

            增加10000天。

天数连续的表有了, 在统计的时候就可以连续统计出来了。

 

 

 

另外: SUM()为空时,转为0

                      COALESCE(SUM(pay_amount),0)

保留两位小数:

                      ROUND(COALESCE(SUM(epc.pay_amount),0), 2)

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张小帅和刘美美

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值