首页 新闻 会员 周边 捐助

如何补齐没有数据的时间刻度?

0
悬赏园豆:10 [待解决问题]
-- 如下我有这样一张日志表
id    userid     signIn_time           signOut_time             create_time
17    1680019    2015-12-31 14:57:29                            2015-12-31 15:18:29
18    1680020    2015-12-31 15:05:29                            2015-12-31 15:18:29
19    1680021    2015-12-31 15:12:29                            2015-12-31 15:18:29
20    1680021    2015-12-31 15:12:29                            2015-12-31 15:18:29
21    1680022    2015-12-31 15:12:29                            2015-12-31 15:18:29

我要统计每天每个时刻的在线人数总数,如下:

select DATE_FORMAT(signin_time, '%H:%i:%s'), count(1) totals from online_user 
where date(signin_time)=date(now()) and signout_time is NULL
group by DATE_FORMAT(signin_time, '%H:%i:%s')

但是统计出的数据并不是一天所有整点时刻的,因为由于数据问题某些整点时刻是没有数据的,而我要统计出每天所有时刻下的在线人数总数

上面SQL语句出现的数据如下:

14:57:29    1
15:05:29    1
15:12:29    3

我想要的是:

00:00    244
01:00    655
...
...
...
14:00    1000
15:00    888
...
...
24:00    899

 左列为时间刻度tick,右边的为总在线人数值totals

最佳损友。的主页 最佳损友。 | 初学一级 | 园豆:63
提问于:2015-12-31 16:39
< >
分享
所有回答(1)
0

每太明白题主的问题,如果说想获取12点的在线人数,就signin_time<12点 and signout_time >12 点   作为条件就好了呀 

所有整点时刻  无非就是  1点 2点 3 点  ...  24点。。。。

_Arnold | 园豆:635 (小虾三级) | 2015-12-31 17:14

是想查询整点时刻的,但是数据库的记录并不是所有时刻的数据都有,所以想知道一般会如何补齐数据

同时问题已更新

 

支持(0) 反对(0) 最佳损友。 | 园豆:63 (初学一级) | 2015-12-31 17:31

@11点后要睡觉: 

你缺少的数据一般是  signout_time 吧   不用补齐呀,  你选的时间点  肯定是过去的时间点吧   signout_time 的时间没有值得花  就必然大于你选的时间点呀        加另一个条件   signin_time<12点 and   signout_time = null   就行了呀   

支持(0) 反对(0) _Arnold | 园豆:635 (小虾三级) | 2015-12-31 17:36
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册