2011-05-11 68 views
2

我正在研究一個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

您能否提供帶有示例數據的模式? – garnertb 2011-05-11 19:00:13

+0

爲什麼你爲''''和'sql-server [-2008]'添加了這個標籤? – 2011-05-11 19:04:21

+0

@Martin - 道歉... – MrM 2011-05-11 19:16:36

回答

3

轉換爲DATEPART(HH,.....

SELECT DATEPART(hh,GETDATE())

既然你是SQL Server 2008上,您可以使用時間數據類型,只是轉換時間

例如

SELECT CONVERT(TIME,GETDATE()) 

然後你可以過濾也

因爲我不知道你的輸出應該是什麼樣子,我告訴你們兩個,但如果你需要的是按小時分組,那麼就做一個datepart(hh....

+1

爲什麼要把它轉換爲'Time'數據類型? – Thomas 2011-05-11 18:42:00

+0

@Thomas - 考慮到我只需要時間而不是約會,這不是一個好主意嗎? – MrM 2011-05-11 18:47:57

+0

@ user54197 - 通過僅提取值的小時部分,您已經忽略了日期部分。沒有必要明確地剝奪它然後忽略它。 – Thomas 2011-05-11 18:54:07

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 
相關問題