mysql以小时,天,周,月为单位查询
背景
基本上要做数据统计分析的程序,都会涉及到类似这种按周,按月,按年,按自定义时间查询区间数据的需求。刚好今天写了这个代码,把整个思路及mysql语句整理下,供以后参考。
group by存在的问题
如果按照group by的查询,则会出现这种漏数据的情况:如果这段连续时间内,有某天没有数据,则会跳过那天的数据,直接统计到下个有数据的日期,此时会出现数据统计不完全、丢数据、数据对应不上的情况
group by 查询sql
select
count(order_number) orderNum ,
count(distinct customer_id) customerNum,
sum(money) totalMoney,
date(date_format(create_time, '%Y-%m-%d')) as thisweek
from
os_order_form
where
date(date_format(create_time, '%Y-%m-%d')) >= date(subdate(curdate(), date_format(curdate(), '%w') - 1)