Мой select
прекрасно работает, за исключением того, что число одинаково для каждого часа:
SQLfiddle: http://sqlfiddle.com/#!9/bae01d/32
Player | Day | Hour | Minutes | % online
player1 | 27 | 0 | 60 | 100
player1 | 27 | 1 | 60 | 100
player1 | 27 | 2 | 60 | 100
player1 | 27 | 3 | 60 | 100
player1 | 27 | 4 | 60 | 100
...
Таблица активности содержит только поминутные записи для игроков онлайн, офлайн-игроки будут отсутствовать. Здесь происходит соединение, таблица-заглушка содержит 24 строки для часов 0-23.
Как переписать этот запрос, чтобы общее количество минут в час, в течение которых игрок находился в сети, было правильным?
select
player,
day(datetime) as Day,
stub.hour,
hour(datetime) as Hour,
count(player) as minutes,
((count(player) / 60) * 100) as percent_of_hr
FROM stub_hours as stub
LEFT JOIN activity
on Hour=stub.hour
GROUP BY date_format( datetime, '%Y%m%d%h' ), Day, Hour, player
ORDER BY player, datetime desc, Day, hour, minutes desc;