php+mysql 按不同时间粒度统计数据

在做一个可视化数据的接口,可视化图表的需求是:可以按照不同的粒度(即天\小时\半小时)去分组统计数据.
举个粒度为天的例子:
人流数据表:
id     name                 time
1      ces                  2017-12-20 10:10:00
2      xiaoming             2017-12-20 09:10:00
3      lisi                 2017-12-19 02:10:00
4      zhangsan             2017-12-17 00:10:00

想要统计出

count              date
2                  2017-12-20
1                  2017-12-19
0                  2017-12-18
1                  2017-12-17

这样的结果,也就是按日期去分组统计人流量。
 
个人的尝试: 
1、有想到用 group by DATE_FORMAT( time, "%Y-%m-%d" ) 去对日期分组,可是上面的2017-12-18这一天的人流是0,也就是在人流表里没有记录,是不会统计出来的,只会统计有人流记录的日期,而且当粒度小于一个小时,比如30分钟和15分钟的时候,这个mysql语句应该怎么改?
2、网上有人说用一个日期常量表关联查询,可是那也只是在日期的粒度查询的呀,如果有多个粒度的话就要去准备多个常量表?请教大神这种情况应该怎么处理最好?

德玛西亚99
浏览 634回答 4
4回答

红糖糍粑

类似这种效果?

至尊宝的传说

前端在可视化数据展示输出的时候对没有的天数进行补0不就好了么。

蓝山帝景

你可以转化成时间戳进行计算

不负相思意

可视化图表基本都是每隔一定时间去数据库里读取一次数据,然后存储到一个单独的表里的吧?不应该做成每次看表都要实时生成的!定时读取数据存储到表里,读取的时候直接根据这个表生成线性趋势就可以了,很简单吧!否则,后端直接生成曲线数据那你就造常量表吧,太多这种需求要都这么干法,烦!
打开App,查看更多内容
随时随地看视频慕课网APP