вроде ни одного подзапроса тут не надо:
select user_id, DATE_ADD( FROM_DAYS( TO_DAYS( request_time ) ), INTERVAL HOUR(request_time) HOUR ) as rh, count( * ) as cnt from stats
where request_time between DATE_ADD( CURDATE( ), INTERVAL -7 DAY ) and CURDATE( )
group by by user_id, rh