MySQL实现连续日期统计
程序员文章站
2024-01-10 14:58:34
...
1.问题
问题是这样的,我数据库里面的数据是不连续生成的。如:
SELECT DATE_FORMAT(create_time, '%m-%d') dfc, sum(o.pay_price) price
FROM tj_order o
WHERE o.state = 9
AND o.store_id = '2c90b0fd70e1064c0170e23b83b5000a'
AND o.create_time>='2020-03-01 2020-03-01 00:00:00'
AND o.create_time<='2020-03-17 23:59:59'
GROUP BY dfc
但是,我想从3月1号到17号的数据都查询出来,没有的0来代替。
2.解决方案
SELECT dts.df, IF(ps.price is NULL, 0, ps.price) price
FROM (SELECT
--date_format格式化日期,date_add增加减少时间间隔
date_format( date_add( '2020-03-01 00:00:00', INTERVAL + t.help_topic_id DAY ), '%m-%d' ) AS 'df'
FROM
-- 这里利用了mysql自带的表,最大642,你也可以自己定义一个表。
mysql.help_topic t
WHERE
-- 这里的16可以通过java计算两个日期的天数传过来。
t.help_topic_id <= 16 ) as dts
LEFT JOIN (SELECT DATE_FORMAT(create_time, '%m-%d') dfc, sum(o.pay_price) price
FROM tj_order o
WHERE o.state = 9
AND o.store_id = '2c90b0fd70e1064c0170e23b83b5000a'
AND o.create_time>='2020-03-01 2020-03-01 00:00:00'
AND o.create_time<='2020-03-17 23:59:59'
GROUP BY dfc) as ps
ON ps.dfc = dts.df
ORDER BY dts.df
上一篇: Atom Markdown预览不同步滚动的解决方法
下一篇: 工作中解决问题汇总