There is nothing wrong with two stats commands, as long as they are aggregating the information you want them to collect. Since the aggregation is running hourly, across a longer time frame, you need to add _time into the first stats in order to collect valid comparison data.
Do this across your longer time frame and see how well it matches a pull from your summary for the same time frame.
event="pageview"
| rename ...
| eval Variant = ... , deviceGroup = ...
| bin _time span=1h
| stats count as pageview_per_user by userID, Variant, deviceGroup, _time
| stats count as users, sum(pageview_per_user) as pageviews, avg(pageview_per_user) as avg_pv, stdev(pageview_per_user) as std_pv by Variant, deviceGroup
or
| sistats dc(userID) as users, sum(pageview_per_user) as pageviews, avg(pageview_per_user) as avg_pv, stdev(pageview_per_user) as std_pv by Variant, deviceGroup
... View more