此查询产生每小时登录次数:
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)
我需要弄清楚的是如何查询给定日期的每小时平均登录次数.有帮助吗?
使用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不能.