我正在开发一个sql视图,它应该按一天中的小时获得平均点击次数,而不管流量监控的日期/日期(12:00:00.000 - 12:59:59.999)。有什么想法吗?
修改
现在我有总数,我如何获得平均值? SELECT AVG(“功能低于”)不工作
SELECT COUNT(*) AS total, DATEPART(hh, LogDate) AS HourOfDay
FROM dbo.Log
GROUP BY DATEPART(hh, LogDate)
答案 0 :(得分:3)
转换为DATEPART(......,.....
示例SELECT DATEPART(hh,GETDATE())
由于您使用的是SQL Server 2008,因此可以使用时间数据类型,只需转换为时间
例如
SELECT CONVERT(TIME,GETDATE())
然后你也可以过滤
由于我不确定您的输出应该是什么样的,因此我向您展示了两者,但如果您只需按小时分组,那么只需执行datepart(hh....
。
答案 1 :(得分:1)
下面的查询对您来说可能已经足够了。它将计数除以LogDate列中今天日期和最小日期之间的差异。
SELECT DATEPART(hh,LogDate) as Hour
,CAST(COUNT(*)as decimal)/DATEDIFF(d,(SELECT MIN(LogDate) from log)
,CURRENT_TIMESTAMP) as AverageHits
, COUNT(*) as Count
FROM log
GROUP BY DATEPART(hh,LogDate)
ORDER by DATEPART(hh,LogDate) asc