sql查询日期范围,没有自动补0

1、问题在线

为了实现echarts按天统计每天的总数,但是有几天没有数据,sql中并不显示
该怎么实现?

2、实现思路

先查出你想统计近几天天数的日期,然后关联数据表的日期,并用ifnull函数,没有数据自动补0;

3、 统计你想查询的连续天数

SELECT
			@cdate := DATE_ADD(@cdate, INTERVAL - 1 DAY) DAY
		FROM
			(
				SELECT
					@cdate := DATE_ADD('2020-3-25', INTERVAL + 1 DAY)
				FROM
					表名
			) t0
		LIMIT 14

执行结果
在这里插入图片描述

4、关联表

SELECT
	t1. DAY,
	IFNULL(t2.id, 0) AS id
FROM
	(
		SELECT
			@cdate := DATE_ADD(@cdate, INTERVAL - 1 DAY) DAY
		FROM
			(
				SELECT
					@cdate := DATE_ADD('2020-3-25', INTERVAL + 1 DAY)
				FROM
					u_record 
			) t0
		LIMIT 14
	) t1
LEFT JOIN (
	SELECT
		DATE(u.open_time) DAY,
		COUNT(1) AS id
	FROM
		u_record u
	WHERE
		u.open_time <= '2020-3-25'
	AND DATE(u.open_time) > DATE_SUB('2020-3-25', INTERVAL '14' DAY)
	AND unusuall_type ='0'
	GROUP BY
		DAY
) t2 ON t1. DAY = t2. DAY
ORDER BY
	DAY ASC

执行结果
在这里插入图片描述
5、sql分析
1.@cdate := 是定义名为cdate的变量并赋值(select 后面必须用:=)

2.@cdate := DATE_ADD(‘20171219’, INTERVAL + 1 DAY) 按照传入的日期’20171219’,加一天

3.SELECT @cdate := DATE_ADD(‘20171219’, INTERVAL + 1 DAY) FROM order

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值