MySQL:如何计算按天/小时分组的分钟行
我的选择非常有效,只是每小时的计数相同: SQLfiddle:MySQL:如何计算按天/小时分组的分钟行,mysql,datetime,Mysql,Datetime,我的选择非常有效,只是每小时的计数相同: SQLfiddle: 我相信这应该是你需要的: SELECT sh.player, sh.day, sh.hour, act.count_minutes minutes, ((act.count_minutes / 60) * 100) AS percent_of_hr FROM (SELECT player, MONTH(datetime) amonth, DAY(datetime) aday, HOUR(datet
我相信这应该是你需要的:
SELECT
sh.player,
sh.day,
sh.hour,
act.count_minutes minutes,
((act.count_minutes / 60) * 100) AS percent_of_hr
FROM (SELECT
player,
MONTH(datetime) amonth,
DAY(datetime) aday,
HOUR(datetime) ahour,
COUNT(*) count_minutes
FROM activity
GROUP BY player,
MONTH(datetime),
DAY(datetime),
HOUR(datetime)) act
RIGHT JOIN (SELECT DISTINCT
a.player,
s.hour,
DAY(a.datetime) day,
MONTH(a.datetime) month
FROM activity a
CROSS JOIN stub_hours s) sh
ON act.ahour = sh.hour
AND act.player = sh.player
AND act.aday = sh.day
AND act.amonth = sh.month
ORDER BY sh.player, sh.day, sh.hour;
如果您需要不同的输出,请告诉我 你期望的结果是什么?看看这个:。它应该在一些方面有所帮助,但不是解决方案。发布你的预期结果,我可以试着帮你实现。哇,非常感谢你的帮助,克林诺,这很有效!我没想到会有三个问题。你解决这个问题的方式很有趣,我还在仔细阅读,但我想说声谢谢,它正是我需要的方式。
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;
SELECT
sh.player,
sh.day,
sh.hour,
act.count_minutes minutes,
((act.count_minutes / 60) * 100) AS percent_of_hr
FROM (SELECT
player,
MONTH(datetime) amonth,
DAY(datetime) aday,
HOUR(datetime) ahour,
COUNT(*) count_minutes
FROM activity
GROUP BY player,
MONTH(datetime),
DAY(datetime),
HOUR(datetime)) act
RIGHT JOIN (SELECT DISTINCT
a.player,
s.hour,
DAY(a.datetime) day,
MONTH(a.datetime) month
FROM activity a
CROSS JOIN stub_hours s) sh
ON act.ahour = sh.hour
AND act.player = sh.player
AND act.aday = sh.day
AND act.amonth = sh.month
ORDER BY sh.player, sh.day, sh.hour;