我有一個數據輸入表單,任何人都必須填寫3個表單。我記錄表格1,表格2,表格3的入場時間。現在我想知道填寫表格給所有人的平均時間是多少。我怎樣才能做到這一點?SQL Server DateTime列的差異平均值
1
A
回答
2
基於極爲模糊的要求進行100%猜測。
DECLARE @x TABLE
(
UserID INT,
FormID TINYINT,
StartTime DATETIME,
EndTime DATETIME
);
INSERT @x VALUES
-- a user who has completed all three forms
(1,1,'20110820 04:25:01','20110820 04:33:07'),
(1,2,'20110820 04:34:05','20110820 04:38:33'),
(1,3,'20110820 04:39:02','20110820 04:47:55'),
-- a user who has completed two forms
(2,1,'20110820 04:25:54','20110820 04:29:32'),
(2,2,'20110820 04:30:55','20110820 04:34:27'),
-- the same user who has completed 1.5 forms
(2,1,'20110820 04:35:23','20110820 04:37:15'),
(2,2,'20110820 04:38:34',NULL),
-- the same user who has completed all three forms
(2,1,'20110820 04:45:12','20110820 04:49:07'),
(2,2,'20110820 04:50:26','20110820 04:55:31'),
(2,3,'20110820 04:56:41','20110820 05:01:23'),
-- a slow user who has completed all three forms
(3,1,'20110820 05:25:04','20110820 05:43:07'),
(3,2,'20110820 05:44:09','20110820 05:55:21'),
(3,3,'20110820 05:59:41','20110820 06:24:23');
下面是我猜會打你要找的人一些典型的聚合:
SELECT -- avg by form regardless of user
FormID,
completed_forms = COUNT(*),
average = AVG(DATEDIFF(SECOND, StartTime, EndTime))
FROM @x GROUP BY FormID;
SELECT -- avg by form and user
UserID,
FormID,
completed_forms = COUNT(*),
[seconds] = AVG(DATEDIFF(SECOND, StartTime, EndTime))
FROM @x GROUP BY UserID, FormID;
SELECT -- avg by user regardless of form
UserID,
completed_forms = COUNT(*),
[seconds] = AVG(DATEDIFF(SECOND, StartTime, EndTime))
FROM @x GROUP BY UserID;
-- if you want hh:mm:ss format and the form never takes > 24 hours to complete,
-- you can do this kind of thing to any of the above queries:
;WITH x(FormID, completed_forms, average) AS
(
SELECT
FormID,
COUNT(*),
AVG(DATEDIFF(SECOND, StartTime, EndTime))
FROM @x GROUP BY FormID
)
SELECT
FormID,
completed_forms,
[hh:mm:ss] = CONVERT(CHAR(8), (CONVERT(TIME(0), DATEADD(SECOND, average, '19000101'))))
FROM x;
1
好吧,因爲我理解你的問題。假設您在用戶點擊完成按鈕時最後將所有三種表單數據放入數據庫中。按照以下步驟實現您的目標。
當您的嚮導上的第一個導航或打開時保持嚮導啓動時間。
讓用戶完成他們的嚮導,當他點擊完成按鈕 保持完成時間在內存
條件的
- 如果用戶沒有完成有嚮導,然後清除memroy放入這個 嚮導。
實施例: 用戶已經在下午6時00分45秒開始的嚮導,並在下午6時12分15秒完成它,以便計算此使用之間這段時間SQL的DATEDIFF函數
使用下面作爲線根據您的要求
SELECT DATEDIFF(hour,@StartTime,@EndTime); 精靈fillup返回小時
SELECT DATEDIFF(minute,@ StartTime,@ EndTime); 返回分鐘嚮導嚮導fillup
SELECT DATEDIFF(second,@StartTime,@EndTime); 返回秒精靈fillup採取
SELECT DATEDIFF(毫秒,@ StartTime,@EndTime); 用於嚮導填充的返回毫秒數
+0
很確定尼瑪希望單獨測量每種形式,而不是整個過程的時間。 –
相關問題
- 1. SQL Server中一行中列的平均值除以零異常
- 2. mongo DB的平均差異
- 3. SQL中的平均值和標準差
- 4. Mysql - 選擇同一列的平均值差異
- 5. 列SQL Server大小差異
- 6. Sql Server Management Studio中的平均值
- 7. 計算所有列的平均值,然後輸出差異
- 8. Python - 大熊貓:日平均值的月平均值與月平均值本身之間的差異
- 9. 要計算在sql服務器列中日期差異的平均值
- 10. 如何從SQL Server 2008中的一系列DateTime列中獲取平均時間?
- 11. 從SQL Server 2005中的DateTime數據集的平均時間
- 12. SQL Server的支點平均
- 13. SQL Server的平均查詢
- 14. SQL Server第n個平均值
- 15. SQL Server:加權平均值+ GROUP BY
- 16. 平均值(c(1,2,21))和平均值(1,2,21)之間的差值
- 17. 新列按日期平均在SQL Server
- 18. x的平均值的誤差線除以y的平均值
- 19. 價值和平均值之間的差異(價值)
- 20. 獲得休眠的兩個時間戳差異的平均值
- 21. SQL Server 2005中的價值觀差異
- 22. SQL Server:列出表之間的差異
- 23. 平均在SQL Server 2000
- 24. SQL Server:平均總和
- 25. 如何在SQL Server中查找日期列中的平均值
- 26. PHP運行多個數組值差異的平均值
- 27. sql。獲得最大值(平均值(列))
- 28. SQL JOIN平均值
- 29. Python /熊貓:使用日期差異的列值的加權平均值
- 30. MySQL添加時間值之間的差異來查找平均差異。
我們不能從您的數據告訴它花了多長時間來填寫表格,請更準確地瞭解您的問題。 –
我說** LIKE **,我沒有3個人...我想要一個腳本或指南 – Arian
您的模式是什麼樣的?對於每個日誌條目,您是否有一行(例如,您爲每個表單插入一個新行),還是每行表單都有一行包含一列?你可以顯示CREATE TABLE語句嗎? –