计算每月表中的平均小时数

时间:2019-02-09 22:10:52

标签: mysql

我有一个名为“ loginhistory”的表,我需要计算该月的最活跃时间。我该怎么办?

我的表结构是: id,userId,日期(日期时间),ip。

我试图用PHP来做,但是我也没有成功。我希望仅在MySql中完成计算。

我希望输出只是最活跃的小时数。

1 个答案:

答案 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