21,873
社区成员




select flag, count(*) as cnt
from
(select * from G left join tbl_name on G.flagt>=hour(acctstarttime)
where G.flag<=hour(ifnull(acctstoptime,now())
) T
group by 1
ifnull(acctstoptime,now()) 是为解决你 acctstoptime 可能为 null 的
如果不计算下线时间为空的是,之写作 acctstoptime 即可
select * from G left join tbl_name on G.flagt>=hour(acctstarttime) where G.flag<=hour(ifnull(acctstoptime,now())
的作用,你观察一下就知道了。切忌冥思!
根据情况你还需加入过滤日期的代码