mysql统计时间补零_MySQL 查询某时间段范围内的数据 补零

1.创建基础表

CREATE TABLE num (i INT);

INSERT INTO num (i) VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);

2.查询时间范围

SELECT

adddate('2015-11-25', numlist.id) AS 'date'

FROM

(

SELECT

n1.i + n10.i * 10 + n100.i * 100 AS id

FROM

num n1

CROSS JOIN num AS n10

CROSS JOIN num AS n100

) AS numlist

WHERE

adddate('2015-11-25', numlist.id) <= '2015-12-25';

3 创建数据表

create table datatable(tDate char(10) PRIMARY KEY,tCount int(3));

insert into datatable(tDate,tCount)values

('2015-11-24',23),('2015-11-25',1),

('2015-11-26',21),('2015-11-28',17),

('2015-11-29',13),('2015-12-01',5),

('2015-12-02',11),('2015-12-04',8),

('2015-12-05',3),('2015-12-07',29),

('2015-12-09',80),('2015-12-10',24)

4 查询 (无值时补零)

SELECT

a.date,

COALESCE (b.tcount, 0) count

FROM

(

SELECT

adddate('2015-11-25', numlist.id) AS 'date'

FROM

(

SELECT

n1.i + n10.i * 10 + n100.i * 100 AS id

FROM

num n1

CROSS JOIN num AS n10

CROSS JOIN num AS n100

) AS numlist

WHERE

adddate('2015-11-25', numlist.id) <= '2015-12-25'

) a

LEFT JOIN datatable b ON a.date = b.tDate

好 查看结果

93b81302a49b7febd5d7e64ed21e65c7.png

#------------完

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值