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