2012-01-23 105 views
1

我有臺這樣的SUM和平均

ID, Connected, Disconnected 

我需要計算每一個ID花多少時間連接,這是很容易:

SELECT ID, 
CONVERT (INT, SUM (
DATEDIFF(second, Connected, Disconnected)))/60.00 

而且我還需要找到平均連接時間(以上除以每個ID的連接數(ID的外觀)

這樣的事情(不起作用)

SELECT ID, 
CONVERT (INT, SUM (
DATEDIFF(second, Connected, Disconnected)))/60.00, 
CONVERT (INT, SUM (
DATEDIFF(second, Connected, Disconnected)))/60.00/(SELECT COUNT ID) 

如何做到這一點?

謝謝。

回答

1

另一種解決方案: 添加另一列到表中並調用它DIFF(或東西)的設計模式,你設置了「計算列規範」,以「(DATEDIFF(第二,[連接],[斷開] ))「 現在您有一個包含計算出的差異值的列!

然後你就可以在沒有聚合或子查詢的錯誤:)

SELECT ID, AVG(Diff)/60 -- Diff = Your computed column 
FROM YourTable 
GROUP BY ID 

希望它可以幫助組..

3
SELECT ID, AVG(CONVERT (INT, SUM (DATEDIFF(second, Connected, Disconnected)))/60.00) 
GROUP BY ID 
+0

我獲得以下錯誤: 消息130,級別15,狀態1,行51 無法對包含聚合或子查詢的表達式執行聚合函數。 –