SQL:每小时登录的每日平均值

jer*_*iuh 1 sql

此查询产生每小时登录次数:

SELECT DATEADD(hour, DATEDIFF(hour, 0, EVENT_DATETIME), 0), 
       COUNT(*)
  FROM EVENTS_ALL_RPT_V1
 WHERE EVENT_NAME = 'Login' 
   AND EVENT_DATETIME >= CONVERT(DATETIME, '2010-03-17 00:00:00', 120) 
   AND EVENT_DATETIME <= CONVERT(DATETIME, '2010-03-24 00:00:00', 120)
GROUP BY DATEADD(hour, DATEDIFF(hour, 0, EVENT_DATETIME), 0)
ORDER BY DATEADD(hour, DATEDIFF(hour, 0, EVENT_DATETIME), 0)
Run Code Online (Sandbox Code Playgroud)

......有很多这样的结果:

Datetime                 COUNT(*)
----------------------------------
2010-03-17 12:00:00.000  135
2010-03-17 13:00:00.000  129
2010-03-17 14:00:00.000  147
Run Code Online (Sandbox Code Playgroud)

我需要弄清楚的是如何查询给定日期的每小时平均登录次数.有帮助吗?

OMG*_*ies 5

使用AVG聚合函数:

  SELECT CONCAT(DATE_FORMAT(t.event_datetime, '%Y-%m-%d %H'), ':00:00.000') AS hr,
         COUNT(*) AS cnt,
         AVG(*) AS avg
    FROM EVENTS_ALL_RPT_V1 t
   WHERE t.event_name = 'Login'
     AND t.event_datetime BETWEEN '2010-03-24' AND '2010-03-17'
GROUP BY CONCAT(DATE_FORMAT(t.event_datetime, '%Y-%m-%d %H'), ':00:00.000')
ORDER BY hr
Run Code Online (Sandbox Code Playgroud)

ORDER BY子句可以使用列别名,但GROUP BY不能.