我有一个名为“ loginhistory”的表,我需要计算该月的最活跃时间。我该怎么办?
我的表结构是: id,userId,日期(日期时间),ip。
我试图用PHP来做,但是我也没有成功。我希望仅在MySql中完成计算。
我希望输出只是最活跃的小时数。
答案 0 :(得分:0)
是否需要选择平均小时数并不重要。
由于average = count / days
,并且由于days
在整个计算中都是相同的(假设30
),因此最大的count
将是列表中的活动时间。
只需按日期范围选择并按小时分组,然后从降序中选择第一个即可。
SELECT
HOUR(date) AS hour,
COUNT(id) AS logins,
( COUNT(id) / DAY(LAST_DAY('2019-01-01')) ) AS logins_avg
FROM loginhistory
WHERE
date >= '2019-01-01 00:00:00' AND date < '2019-02-01 00:00:00'
GROUP BY HOUR(date)
ORDER BY logins DESC LIMIT 1