-- 如下我有这样一张日志表 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
每太明白题主的问题,如果说想获取12点的在线人数,就signin_time<12点 and signout_time >12 点 作为条件就好了呀
所有整点时刻 无非就是 1点 2点 3 点 ... 24点。。。。
是想查询整点时刻的,但是数据库的记录并不是所有时刻的数据都有,所以想知道一般会如何补齐数据
同时问题已更新
@11点后要睡觉:
你缺少的数据一般是 signout_time 吧 不用补齐呀, 你选的时间点 肯定是过去的时间点吧 signout_time 的时间没有值得花 就必然大于你选的时间点呀 加另一个条件 signin_time<12点 and signout_time = null 就行了呀